【发布时间】:2018-12-18 00:59:38
【问题描述】:
我正在尝试使用 post 方法设置 cookie,以便进行一些 db 查询并将其放回 cookie 值中,并返回包含用户数据的 json。 它有效,cookie 已设置,我在http://localhost:8080 上获得了 json 但我从编译器收到一条消息:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
我怎样才能修复它,使它不会出现这个错误?
我的文件结构是: root/app.js
root/controllers/cookie.controller.js
root/routes/cookie.route.js
app.js
const express = require('express');
const cors = require('cors');
const cookieParser = require('cookie-parser');
const app = express();
const port = process.env.PORT || process.argv[2] || 8080;
app.use(cookieParser());
app.use(require('./routes/cookies'));
app.use(cors());
app.listen(port, () => console.log('cookie-parser demo is up on port: ' + port));
cookie.route.js
const express = require('express');
const cookieController = require('../controllers/cookies');
const router = express.Router();
router.use(require('cookie-parser')());
router.post('/', router.use(cookieController.getCookie));
module.exports = router;
cookie.controller.js
exports.getCookie = (req, res, next) => {
let auth = req.cookies.auth;
//...db queries, get userData
let userData = {
id: '123',
token: 'sfsdfs34',
email: 'user@gmail.com'
};
// if cookie doesn't exist, create it
if (!auth) {
res.status(200)
.cookie('auth', userData.id)
.json({ message: 'it works!', user: userData });
req.cookies.auth = userData.id;
}
next();
};
【问题讨论】:
标签: javascript node.js express cookies