【发布时间】:2018-05-01 16:25:47
【问题描述】:
我正在使用 Nodemon 运行 Node/Express 应用程序...我有一个环境变量,我想在每次 Nodemon 重新启动应用程序时重置它,但我发现虽然重置脚本运行,但环境变量无法访问在正在运行的应用程序中。让我分解一下...
首先,我在我的 Mac 上运行它。
我的应用程序中有一个 bash 脚本,该脚本设置为获取当前日期时间,并将 export 作为环境变量 -
env_publich.sh:
#!/bin/bash
BUILD_DATE=`node ./scripts/version_info/get_build_date.js`
export BUILD_DATE=$BUILD_DATE
echo Setting environment variables: BUILD_DATE="$BUILD_DATE"
(get_build_date.js只是返回一个简单的JSnew Date()对象)
从package.json,start 脚本很简单:
"start": "nodemon app.js"
在我的nodemon.json 中,理想情况下我想调用bash 脚本来生成新的环境变量——在我的想象中,这样就可以了:
"events": {
"start": "source env_public.sh"
},
"env": {
"NODE_ENV": "development",
"PORT": 3000
}
但事实并非如此。尽管NODE_ENV 和PORT 可以按预期使用,但BUILD_DATE 对app.js 不可用,尽管脚本已运行(如果将&& env 附加到Nodemon @987654338,则可以在环境中看到该值@事件)。
我猜这与父/子进程的关系有关,但这不是我熟悉的主题...如果我在NPM start 脚本中调用source env_public.sh && nodemon app.js,该值可在 app.js 中访问,但不会在 Nodemon 重新启动时更新。好的,我有点明白,但它似乎在我看来app.js 是 Nodemon 的一个孩子,因为它继承了上面定义的两个 env 变量......也许我正在使用nodemon.json 中的命令错误?
简而言之,我是否可以在使用 Nodemon 时动态重置环境变量并使新值可用于正在运行的应用程序?
【问题讨论】: