我的身份验证在本地主机上正常工作,但在 Heroku 上部署时出现错误 500。
错误:
{"type":"error","error":{"message":"secret option required for sessions"}}
我在一个 .env 文件上有我的 secret session ,在推送时被 .gitignore 忽略(也许我应该改变它?)
Heroku 日志:
2019-10-23T17:22:22.682593+00:00 heroku[router]: at=info method=GET path="/manifest.json" host=apppack-demo.herokuapp.com request_id=bb235945-cb82-4168-91ce-fd19d2109801 fwd="85.240.87.39" dyno=web.1 connect=0ms service=2ms status=304 bytes=237 protocol=https
2019-10-23T17:22:22.793594+00:00 heroku[router]: at=info method=GET path="/logo192.png" host=apppack-demo.herokuapp.com request_id=8a1d2243-45c9-4919-b2ad-3ee8f9148d9c fwd="85.240.87.39" dyno=web.1 connect=0ms service=2ms status=304 bytes=238 protocol=https
2019-10-23T17:22:35.594349+00:00 heroku[router]: at=info method=POST path="/api/signup" host=apppack-demo.herokuapp.com request_id=43907374-4de3-4658-92ce-9188f03e1624 fwd="85.240.87.39" dyno=web.1 connect=0ms service=3ms status=500 bytes=300 protocol=https
2019-10-23T17:22:35.592607+00:00 app[web.1]: POST /api/signup 500 1.206 ms - 74
最佳答案
我在将代码部署到 AWS Elastic BeanStalk 时遇到了同样的问题。
在 .env 我们可以有 -
secret='my_secret'
在 server.js 中:app.use(cookieParser())
app.use(session({
resave:true,
saveUninitialized:true,
secret:process.env.secret,
cookie:{maxAge:3600000*24}
}))
解决方案原来是在那里的环境中添加 secret 。只需将它添加到您的生产环境中,无论是 heroku 还是 AWS。
关于node.js - 在本地主机中登录但在 Heroku 中部署时出现错误 "secret option required for sessions",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58528070/