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


当前回答

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

在Dockerfile:

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

其他回答

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

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

为了不必担心你是在Windows、Mac还是Linux上运行脚本,请安装cross-env包。然后你可以很容易地使用你的脚本,像这样:

"scripts": {
    "start-dev": "cross-env NODE_ENV=development nodemon --exec babel-node -- src/index.js",
    "start-prod": "cross-env NODE_ENV=production nodemon --exec babel-node -- src/index.js"
}

对这个包的开发人员的巨大支持。

npm install --save-dev cross-env

为了拥有多个环境,您需要之前的所有答案(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访问当前环境。

喉咙痛。

您可以按环境运行,如下所示,

NODE_ENV=production npm run start
heroku config:set NODE_ENV="production"