【问题标题】:NodeJS/Nodemon - reset environment variable on server restartNodeJS/Nodemon - 在服务器重启时重置环境变量
【发布时间】: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.jsonstart 脚本很简单:

"start": "nodemon app.js"

在我的nodemon.json 中,理想情况下我想调用bash 脚本来生成新的环境变量——在我的想象中,这样就可以了:

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

但事实并非如此。尽管NODE_ENVPORT 可以按预期使用,但BUILD_DATEapp.js 不可用,尽管脚本已运行(如果将&& env 附加到Nodemon @987654338,则可以在环境中看到该值@事件)。

我猜这与父/子进程的关系有关,但这不是我熟悉的主题...如果我在NPM start 脚本中调用source env_public.sh && nodemon app.js,该值可在 app.js 中访问,但不会在 Nodemon 重新启动时更新。好的,我有点明白,但它似乎在我看来app.js 是 Nodemon 的一个孩子,因为它继承了上面定义的两个 env 变量......也许我正在使用nodemon.json 中的命令错误?

简而言之,我是否可以在使用 Nodemon 时动态重置环境变量并使新值可用于正在运行的应用程序?

【问题讨论】:

    标签: node.js bash nodemon


    【解决方案1】:

    最简单的方法是直接在 JavaScript 代码中设置环境变量 BUILD_DATE

    process.env.BUILD_DATE = new Date().toString();
    console.log(process.env.BUILD_DATE);
    

    【讨论】:

    • 是的,这是真的......但我试图模仿我的生产环境,其中该值被动态设置为环境变量,以记录服务器最初启动的时间。所以每次 Nodemon 重新启动我的本地服务器时,我都希望它模仿我的生产环境的行为。这没什么大不了的,我只是想在不同的环境中保持一致。
    猜你喜欢
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 2017-12-04
    • 2017-01-07
    • 2020-07-11
    • 2018-09-21
    • 2017-02-07
    • 2018-06-13
    相关资源
    最近更新 更多