簡體   English   中英

我正在嘗試返回 JSON 以通過 passportjs 成功進行身份驗證,但我收到“錯誤在將標頭發送到客戶端后無法設置標頭”。

[英]I am trying to return JSON for successful authentication via passportjs but I'm getting "Error Cannot set headers after they are sent to the client."

在注冊用戶並對其進行身份驗證后,我正在嘗試發送 JSON 文件。 鑒權后回調function也在運行,但是拋出如下錯誤。 請幫忙!

這是 controller function:

 var passport = require("passport"); var connection = require("../config/dataBase"); var User = connection.models.User; const signUp = (req, res) => { User.register( { username: req.body.username, data: { firstName: req.body.firstName, lastName: req.body.lastName, }, }, req.body.password, function (err, user) { if (err) { console.log(err); } else { console.log("1"); passport.authenticate("local", { failureRedirect: "/login", failureMessage: true, }), (function (err, usr) { console.log("Registered and Authenticated"); return res.json({ authenticated: true, status: { message: "Successfully Signed up and authenticated", code: 200, }, }); })(req, res); } } ); res.end(); }; module.exports = signUp;

這是完整的錯誤:

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:372:5)
at ServerResponse.setHeader (node:_http_outgoing:576:11)
at ServerResponse.header (/home/pristyncare/Documents/MERN-Blog/Server/node_modules/express/lib/response.js:767:10)
at ServerResponse.json (/home/pristyncare/Documents/MERN-Blog/Server/node_modules/express/lib/response.js:264:10)
at /home/pristyncare/Documents/MERN-Blog/Server/controllers/signupController.js:26:24
at /home/pristyncare/Documents/MERN-Blog/Server/controllers/signupController.js:33:13
at /home/pristyncare/Documents/MERN-Blog/Server/node_modules/passport-local-mongoose/index.js:247:30
at processTicksAndRejections (node:internal/process/task_queues:96:5) {

代碼:'ERR_HTTP_HEADERS_SENT'}

我的錯,我發送了兩次回復。 只需要在代碼段末尾刪除 res.end() 部分就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM