繁体   English   中英

如何在 OS X 中将 NODE_ENV 设置为生产/开发

[英]How to set NODE_ENV to production/development in OS X

用于 express.js 环境。 有什么建议?

在运行您的应用程序之前,您可以在控制台中执行此操作,

export NODE_ENV=production

或者,如果你在 Windows 中,你可以试试这个:

SET NODE_ENV=production

对于 PowerShell:

$env:NODE_ENV="production"

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

NODE_ENV=production node app.js

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

process.env.NODE_ENV = 'production';

但我不建议在您的运行时文件中执行此操作,因为在您的服务器中打开 VIM 并将其更改为生产环境并不容易。 你可以在你的目录中创建一个 config.json 文件,每次你的应用程序运行时,它都会从中读取并设置配置。

在 package.json 中:

{
  ...
  "scripts": {
    "start": "NODE_ENV=production node ./app"
  }
  ...
}

然后在终端运行:

npm start

这里还没有人提到.env吗? 在您的应用程序根目录中创建一个.env文件,然后require('dotenv').config()并读取值。 易于更改,易于阅读,跨平台。

https://www.npmjs.com/package/dotenv

export NODE_ENV=production不好解决,重启后消失。

如果您不想再担心该变量 - 将其添加到此文件中:

/etc/environment

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

NODE_ENV=production

它在重新启动后工作。 您将不必再在任何地方重新输入export NODE_ENV=production命令,只需将 node 与您喜欢的任何东西一起使用 - 永远,pm2 ...

对于heroku:

heroku config:set NODE_ENV="production"

这实际上是默认的。

为了不必担心您是在 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
heroku config:set NODE_ENV="production"

这是一篇关于NODE_ENV的好文章: http//www.hacksparrow.com/running-express-js-in-production-mode.html

要从Grunt自动设置,您可以使用https://npmjs.org/package/grunt-env插件。

对于 Windows Powershell 使用此命令

$env:NODE_ENV="production" ; node app.js

在 OSX 上,我建议将export NODE_ENV=development添加到您的~/.bash_profile和/或~/.bashrc和/或~/.profile

我个人将该条目添加到我的~/.bashrc然后让~/.bash_profile ~/.profile导入该文件的内容,因此它在不同环境中保持一致。

完成这些添加后,请务必重新启动您的终端以进行设置。

如果你在窗户上。 在正确的文件夹中打开你的 cmd 然后首先

set node_env={your env name here}

点击回车然后你可以启动你的节点

node app.js

它将从您的 env 设置开始

如果你在你的应用程序中使用webpack ,你可以简单地将它设置在那里,使用DefinePlugin ...

因此,在您的plugin部分,将NODE_ENV设置为production

plugins: [
  new webpack.DefinePlugin({
    'process.env.NODE_ENV': '"production"',
  })
]

Windows CMD -> set NODE_ENV=production

Windows Powershell -> $env:NODE_ENV="production"

MAC -> export NODE_ENV=production

为了拥有多个环境,您之前需要所有答案(NODE_ENV 参数并将其导出),但我使用了一种非常简单的方法,无需安装任何东西。 在您的 package.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访问当前环境。

瞧。

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

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

用于express.js环境。 有什么建议么?

npm start --mode production
npm start --mode development

使用 process.env.NODE_ENV = 'production'

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

NODE_ENV=production npm run start

我没有看到任何地方明确提到的 Docker 解决方案; 希望这有助于某人:

在 Dockerfile 中:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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