在express.js环境中使用。有什么建议吗?


当前回答

为了拥有多个环境,您需要之前的所有答案(NODE_ENV参数并导出它),但我使用了一种非常简单的方法,不需要安装任何东西。在你的包裹里。Json只是为你需要的每个env放一个脚本,就像这样:

...
"scripts": {
    "start-dev": "export NODE_ENV=dev && ts-node-dev --respawn --transpileOnly ./src/app.ts",
    "start-prod": "export NODE_ENV=prod && ts-node-dev --respawn --transpileOnly ./src/app.ts"
  }
 ...

然后,要启动应用程序,而不是使用npm start,使用npm run script-prod。

在代码中,您可以使用process.env.NODE_ENV访问当前环境。

喉咙痛。

其他回答

在运行你的应用程序之前,你可以在控制台执行这个操作,

export NODE_ENV=production

或者如果你在窗口,你可以试试这个:

SET NODE_ENV=production

美国小妞PowerShell:

$env:NODE_ENV="production"

或者你可以这样运行你的应用:

NODE_ENV=production node app.js

你也可以在js文件中设置它:

process.env.NODE_ENV = 'production';

但我不建议在运行时文件中执行,因为在服务器中打开VIM并将其更改为生产环境并不容易。你可以进行配置。Json文件,每次你的应用程序运行时,它都会从中读取并设置配置。

我没有看到任何地方明确提到Docker解决方案;希望这能帮助到一些人:

在Dockerfile:

FROM node:16.11-alpine3.14 AS production
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
...

在OSX上,我建议将export NODE_ENV=development添加到~/中。Bash_profile和/或~/。Bashrc和/或~/.profile。

我个人将该条目添加到我的~/。Bashrc,然后有~/。bash_profile ~ /。概要文件导入该文件的内容,因此它在各个环境中是一致的。

完成这些添加后,一定要重新启动终端来进行设置。

export NODE_ENV=production是坏的解决方案,重启后消失。

如果你不想再担心这个变量了,把它添加到这个文件中:

/etc/environment

不要使用导出语法,只需写(如果已经有一些内容,则在新行中):

NODE_ENV=production

重启后即可工作。你将不必再输入导出NODE_ENV=生产命令,任何地方,只要使用节点与任何你想要的-永远,pm2…

对于英雄:

heroku config:set NODE_ENV="production"

也就是默认。

Daniel给出了一个很棒的答案,这是正确部署(设置并忘记)过程的更好方法。

对于那些使用快递的人。 你也可以使用grunt-express-server,这也很棒。 https://www.npmjs.org/package/grunt-express-server