Node JS,检测生产环境

Joe*_*Joe 6 batch-file node.js

当我处于开发模式时,我不希望服务器发送电子邮件和其他内容,因此我在server.js文件中有此文件:

process.env.NODE_ENV = 'development';
Run Code Online (Sandbox Code Playgroud)

当我将其移至生产时,我将值更改为“生产”。

问题当然是在部署中很容易忘记。是否可以通过某种方式检测服务器何时投入生产?

如果不是,是否可以编写一个批处理脚本来替换文件中的字符串?

Sla*_* II 12

您不应该手动更改process.env对象的值,因为该对象反映了您的执行环境。

在您的代码中,您应该执行以下操作:

const environment = process.env.NODE_ENV || 'development';
Run Code Online (Sandbox Code Playgroud)

然后您在生产中启动您的应用程序,如下所示:

$ NODE_ENV=production node app.js
Run Code Online (Sandbox Code Playgroud)

如果NODE_ENV没有设置环境变量,则默认设置development为环境变量。

您还可以在开发中使用dotenv模块来指定文件中的所有环境变量。

此外,我还实现了一个可重用模块,它允许通过分析 CLI 参数和 NODE_ENV 变量来自动检测环境。这在您的开发机器上可能很有用,因为您可以通过将 CLI 参数传递给 Node.js 程序来轻松更改环境,如下所示$ node app.js --prod:与 Gulp: 一起使用也很好$ gulp build --prod

detect-environment请参阅该页面上的更多详细信息和用例。