繁体   English   中英

NodeJS / Nodemon-服务器重新启动时重置环境变量

[英]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.jsonstart脚本非常简单:

"start": "nodemon app.js"

并且在我的nodemon.json ,理想情况下,我想调用bash脚本以生成新的环境变量-在我的想象中,这可以解决问题:

"events": {
    "start": "source env_public.sh"
},
"env": {
    "NODE_ENV": "development",
    "PORT": 3000
}

但事实并非如此。 尽管可以NODE_ENVPORT ,但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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM