[英]NodeJS/Nodemon - reset environment variable on server restart
我正在使用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
,但app.js
不能使用BUILD_DATE
,尽管脚本已运行(如果在Nodemon start
事件上追加&& env
,则可以在环境中看到该值)。
我想这与父/子进程的关系有关,但是如果我在NPM start
脚本中调用source env_public.sh && nodemon app.js
,这不是我所熟悉的主题。 ,该值可在app.js
访问,但不会在Nodemon重新启动时更新。 好的,我有点理解,但是在我看来 app.js
是Nodemon的子级,因为它继承了上面定义的两个env
变量...也许我在nodemon.json
使用了错误的命令?
简而言之,是否可以在使用Nodemon时动态重置环境变量并使新值可用于正在运行的应用程序?
最简单的方法是直接在JavaScript代码中设置环境变量BUILD_DATE
。
process.env.BUILD_DATE = new Date().toString();
console.log(process.env.BUILD_DATE);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.