node.js - 在本地主机中登录但在 Heroku 中部署时出现错误 "secret option required for sessions"

标签 node.js reactjs express heroku

我的身份验证在本地主机上正常工作,但在 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/

相关文章:

java - RabbitMQ:在 Node.js 中发布,在 Java 中订阅

javascript - 带有嵌套函数的 Node 异步函数

javascript - 将 Prop 传递给不相关的组件返回未定义

javascript - 箭头函数不应返回赋值 Eslint

javascript - 仅定义 mongoose 和 Schema

javascript - Node.js + Express + MySQL 作为文档存储(结果)

node.js - eslint:忽略模式规则不起作用

javascript - if else 条件使用类名

node.js - 当我在表中添加新列时,Sequelize 未更新

node.js - 集群模式下 node.js 进程的最大数量