​在设置cookie后刷新页面node报错

来源:6-12 登录注册-cookie保存登录状态

_孤屿孤行

2018-05-21

登录成功存入cookie后,刷新页面报以下错误:

Error: Can't set headers after they are sent.

    at validateHeader (_http_outgoing.js:494:11)

    at ServerResponse.setHeader (_http_outgoing.js:501:3)

    at ServerResponse.header (D:\yimai\node_modules\_express@4.16.3@express\lib\response.js:767:10)

    at ServerResponse.json (D:\yimai\node_modules\_express@4.16.3@express\lib\response.js:264:10)

    at D:\yimai\server\user.js:49:18

    at D:\yimai\node_modules\_mongoose@5.0.17@mongoose\lib\model.js:3954:16

    at process.nextTick (D:\yimai\node_modules\_mongoose@5.0.17@mongoose\lib\query.js:2022:28)

    at _combinedTickCallback (internal/process/next_tick.js:131:7)

    at process._tickCallback (internal/process/next_tick.js:180:9)

以下是代码片段:

Router.get("/info", function(req, res) {

const { userid } = req.cookies;

if (!userid) {

return res.json({ code: 1 });

}

User.findOne({ _id: userid }, _filter, function(err, doc) {

if (err) {

return res.json({ code: 1, msg: "后台出现错误!" });

}

if (doc) {

return res.json({ code: 0, data: doc });

}

});

// 用户有没有cookie

return res.json({

code: 1

});

});

求解。

写回答

1回答

慕瓜8449030

2018-05-22

这个代码有一种情况,就是你的User.findOne会返回一个相应,但是下面还会有一个相应  所以会触发两次res.json导致的  一个请求应该确保只有一次相应,你把没有cookie哪个判断,放到最前面吧  用if判断下

0
1
_孤屿孤行
非常感谢!
2018-05-22
共1条回复

Redux+React Router+Node.js全栈开发

全网唯一的React 16+Redux+React Router4实战课程,学到手是你的真本领!

1822 学习 · 750 问题

查看课程