Node.js Can';t在发送到NodeJS Express后设置标题
我是NodeJS的新手,当我尝试使用电子邮件和密码登录时,会出现以下错误: (部分) 错误:发送邮件后无法设置邮件头。 在validateHeader(_http_outgoing.js:491:11) 在ServerResponse.setHeader(_http_outgoing.js:498:3) 在ServerResponse.header(C:\Users\asus\Desktop\server\node\u modules\express\lib\response.js:771:10) 位于ServerResponse.location(C:\Users\asus\Desktop\server\node\u modules\express\lib\response.js:888:15) 在ServerResponse.redirect(C:\Users\asus\Desktop\server\node\u modules\express\lib\response.js:926:18) 在app.post(C:\Users\asus\Desktop\server\app.js:114:9) 在Layer.handle[作为handle\u请求](C:\Users\asus\Desktop\server\node\u modules\express\lib\router\Layer.js:95:5) 下一步(C:\Users\asus\Desktop\server\node\u modules\express\lib\router\route.js:137:13)Node.js Can';t在发送到NodeJS Express后设置标题,node.js,express,backend,Node.js,Express,Backend,我是NodeJS的新手,当我尝试使用电子邮件和密码登录时,会出现以下错误: (部分) 错误:发送邮件后无法设置邮件头。 在validateHeader(_http_outgoing.js:491:11) 在ServerResponse.setHeader(_http_outgoing.js:498:3) 在ServerResponse.header(C:\Users\asus\Desktop\server\node\u modules\express\lib\response.js:771:10
在重定向主页(C:\Users\asus\Desktop\server\app.js:42:9) 在Layer.handle[作为handle\u请求](C:\Users\asus\Desktop\server\node\u modules\express\lib\router\Layer.js:95:5) 错误:发送邮件后无法设置邮件头。 在validateHeader(_http_outgoing.js:491:11) 在ServerResponse.setHeader(_http_outgoing.js:498:3) 在ServerResponse.header(C:\Users\asus\Desktop\server\node\u modules\express\lib\response.js:771:10) 位于ServerResponse.location(C:\Users\asus\Desktop\server\node\u modules\express\lib\response.js:888:15)
const express=require('express'))
const session=require('express-session')
const bodyParser=require('body-parser')
常量用户=[
{id:1,姓名:'Alex',电子邮件:'alex@gmail.com,密码:“123”},
{id:2,名称:'Max',电子邮件:'max@gmail.com,密码:“123”},
{id:3,姓名:'Tiffany',电子邮件:'tiffany@gmail.com,密码:“123”}
]
const app=express()
app.use(bodyParser.urlencoded({
扩展:正确
}))
应用程序使用(会话)({
名称:“sid”,
resave:false,
saveUninitialized:false,
秘密:“nikivekartal”,
曲奇:{
最大值:1000*60*60*2,
sameSite:没错,
}
}))
const redirectLogin=(请求、恢复、下一步)=>{
如果(!req.session.userId){
res.redirect(“/login”)
}
否则{
下一个()
}
}
const redirectHome=(请求、恢复、下一步)=>{
if(请求会话用户ID){
res.redirect(“/home”)
}
否则{
下一个()
}
}
应用程序获取(“/”,(请求,请求)=>{
const{userId}=req.session;
console.log(“Session”,req.Session.userId)
res.send(`
欢迎
${userId?`
注销
` : `
`}`)
})
app.get('/home',重定向登录,(req,res)=>{
res.send(`
家
- 苹果
- 樱桃
`)
})
//redirectHome mddleware ini eğer用户验证olmuşsa登录'e gitmesin'
//吉辛之家,迪耶·科尤约鲁兹
app.get('/login',redirectHome,(req,res)=>{
res.send(`
登录
`)
})
app.get('/register',redirectHome,(req,res)=>{
res.send(`
登记
`)
})
app.post('/login',重定向主页,(请求,回复)=>{
const{email,password}=req.body
如果(电子邮件和密码){
const user=users.find(
user=>user.email===email&&user.password===password
)
如果(用户){
req.session.userId=user.id
res.redirect(“/home”)
}
}
res.redirect(“/login”)
})
app.post('/register',重定向主页,(请求,回复)=>{
})
app.post('/logout',重定向登录,(req,res)=>{
})
app.listen(process.env.PORT | | 3000,()=>{
log(“服务器正在运行”);
})
我该怎么做?为什么?谢谢您的考虑。您的
/login
路由可以调用res.redirect()
两次。在其中一个之后添加一个返回值以更改此设置:
app.post('/login', redirectHome, (req, res) => {
const {email, password} = req.body
if(email && password){
const user = users.find(
user => user.email === email && user.password === password
)
if(user){
req.session.userId = user.id
res.redirect('/home')
}
}
res.redirect('/login')
});
为此:
app.post('/login', redirectHome, (req, res) => {
const {email, password} = req.body
if(email && password){
const user = users.find(
user => user.email === email && user.password === password
)
if(user){
req.session.userId = user.id
res.redirect('/home')
return; // <== add this return
}
}
res.redirect('/login')
});
app.post('/login',redirectHome,(req,res)=>{
const{email,password}=req.body
如果(电子邮件和密码){
const user=users.find(
user=>user.email===email&&user.password===password
)
如果(用户){
req.session.userId=user.id
res.redirect(“/home”)
return;//顺便说一句,代码还没有完成。我在尝试执行res.render()时出现了这个错误,而我已经执行了一个。我的意思是,对于路由上的一个用户请求,我将执行两个响应。两个不同的res.render(),一个在开始时,一个在劳动密集型工作完成后。HTTP协议是每1个请求1个响应。
app.post('/login', redirectHome, (req, res) => {
const {email, password} = req.body
if(email && password){
const user = users.find(
user => user.email === email && user.password === password
)
if(user){
req.session.userId = user.id
res.redirect('/home')
return; // <== add this return
}
}
res.redirect('/login')
});