我正在使用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
只返回一个简单的JS new 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 start
事件。)
我猜这与父/子进程的关系有关,但这不是我熟悉的主题......如果我在NPM中调用source env_public.sh && nodemon app.js
{{1在start
中可以访问该值,但在Nodemon重新启动时它不会更新。好吧,我有点理解,但似乎对我来说app.js
是Nodemon的孩子,因为它继承了上面定义的两个app.js
变量......也许我在env
中使用了错误的命令?
简而言之,无论如何,我是否可以在使用Nodemon时动态重置环境变量,并为正在运行的应用程序提供新值?
答案 0 :(得分:0)
最简单的方法是直接在JavaScript代码中设置环境变量BUILD_DATE
。
process.env.BUILD_DATE = new Date().toString();
console.log(process.env.BUILD_DATE);