![](/img/trans.png)
[英]How to change the NODE_ENV from development to production automatically by using dotenv (.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()
并读取值。 易于更改,易于阅读,跨平台。
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.