无法在发送标题后设置标题

时间:2017-09-21 17:29:57

标签: node.js express cors

我正在使用快速后端,反应前端一切正常,但偶尔我会收到错误

  

发送后不能设置标题

和服务器下来。我搜索了这个错误可能发生的几种方法,但在我的代码中我找不到这样的情况。我试图在代码中尽可能简单。任何人请指出我可能是什么问题?< / p>

Server.js文件

// call the packages we need
const addItem = require('./controllers/addItem');
const addCategory = require('./controllers/addCategory');
const addSubCategory = require('./controllers/addSubCategory');
const getSubCategory = require('./controllers/getSubCategoryByCategory');
const getCategory = require('./controllers/getAllCategory');
const getAllItems = require('./controllers/getAllItems');
const cors = require('cors');
const express = require('express');
// call express
const app = express(); // define our app using express
const bodyParser = require('body-parser');

// configure app to use bodyParser()
// this will let us get the data from a POST
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cors());

const port = process.env.PORT || 8080; // set our port

// ROUTES FOR OUR API
// =============================================================================
const addItemRoute = express.Router(); // get an instance of the express Router
const getCategoryRoute = express.Router();
const addCategoryRoute = express.Router();
const addSubCategoryRoute = express.Router();
const getSubCategoryRoute = express.Router();
const getAllItemsRoute = express.Router();

getCategoryRoute.get('/get_category', (req, res) => {
  getCategory(res);
});

addCategoryRoute.post('/add_category', (req, res) => {
  addCategory(req.body.name, res);
});

getSubCategoryRoute.get('/get_subcategory/:catId', (req, res) => {
  getSubCategory(req.params.catId, res);
});

addSubCategoryRoute.post('/add_subcategory', (req, res) => {
  addSubCategory(req.body.name, req.body.cat_id, res);
});

// code, name, quantity, length, description and subcategory id should be passed as parameters
addItemRoute.post('/add_item', (req, res) => {
  addItem(req.body.item, res);
});

getAllItemsRoute.get('/get_items', (req, res) => {
  getAllItems(res);
});

// more routes for our API will happen here

// REGISTER OUR ROUTES -------------------------------
// all of our routes will be prefixed with /api
app.use('/api', addItemRoute);
app.use('/api', getCategoryRoute);
app.use('/api', addCategoryRoute);
app.use('/api', addSubCategoryRoute);
app.use('/api', getSubCategoryRoute);
app.use('/api', getAllItemsRoute);

// START THE SERVER
// =============================================================================
app.listen(port);
console.log(`Server started on port ${port}`);

getAllCategories()函数

Object.defineProperty(exports, '__esModule', {
  value: true,
});
const pool = require('./connection');

module.exports = function (res) {
  pool.getConnection((err, connection) => {
    if (err) {
      connection.release();
      return res.json({ code: 100, status: 'Error in connection database' });
}

console.log(`connected as id ${connection.threadId}`);

connection.query('select * from category;', (err, rows) => {
  connection.release();
  if (!err) {
    return res.json(rows);
  }
});

    connection.on('error', err => res.json({ code: 100, status: 'Error in connection database' }));
  });
};

1 个答案:

答案 0 :(得分:2)

如果您在connection.query()收到错误,则会发送res.json()的回复。您发送另一个响应的connection.on('error')中会捕获此错误。您不能向同一请求发送两个回复。在这种情况下,您似乎根本不需要connection.on(),或者如果您有其它错误,请不要发送connection.query()错误的响应。