我试图在配置文件 app.json 中为部署到Heroku的Node.js应用设置配置/环境变量,但是当我尝试在自己的Node中访问该变量时,该变量未定义.js代码。我设法找到一个不起作用的非常简单的示例:
-
下载Node.js“官方”非常简单的示例:
$ git clone https://github.com/heroku/node-js-getting-started.git $ cd node-js-getting-started
-
编辑 app.json 并将其添加到末尾:
... "image": "heroku/nodejs","env" : { "MYVAR": "12345" } }
-
将 index.js 的最后一行替换为:
.listen(PORT,() => console.log(`Listening on ${ PORT },var is ${ process.env.MYVAR }`))
-
部署到Heroku:
$ heroku create $ git add . & git commit -s "changes" & git push heroku master $ heroku open
现在,我在日志中得到“在24619上监听,var未定义”。我怀疑 app.json 被忽略了,因为如果我添加
"addons": ["heroku-postgresql:hobby-dev"]
然后,没有数据库链接到该应用程序。但是,如果我在终端中运行,一切都会按预期进行:
$ heroku addons:create heroku-postgresql:hobby-dev
$ heroku config:set MYVAR=12345
为什么尽管清单中包含信息,但仍未定义config var且未为应用初始化数据库?