用于express.js环境。有什么建议吗?
答案 0 :(得分:599)
在运行您的应用之前,您可以在控制台中执行此操作,
export NODE_ENV=production
或者,如果你在Windows中,你可以试试这个:
SET NODE_ENV=production
或者您可以像这样运行您的应用:
NODE_ENV=production node app.js
您也可以在js文件中设置它:
process.env.NODE_ENV = 'production';
但我不建议在运行时文件中执行此操作,因为在服务器中打开VIM并将其更改为生产并不容易。您可以在目录中创建config.json文件,每次运行应用程序时,都会从中读取并设置配置。
答案 1 :(得分:88)
:
{
...
"scripts": {
"start": "NODE_ENV=production node ./app"
}
...
}
然后在终端中运行:
npm start
答案 2 :(得分:50)
这里没有人提到.env
?在您的应用根目录中创建.env
文件,然后require('dotenv').config()
并读取值。易于更改,易于阅读,跨平台。
答案 3 :(得分:42)
export NODE_ENV=production
是不好的解决方案,重启后会消失。
如果您不想再担心该变量,请将其添加到此文件中:
/etc/environment
请勿使用导出语法,只需编写(如果某些内容已经存在,则换行):
NODE_ENV=production
重启后才能运行。您不必再在任何地方重新输入 export NODE_ENV = production 命令,只需使用您喜欢的任何节点 - 永远,pm2 ......
对于heroku:
heroku config:set NODE_ENV="production"
实际上是默认值。
答案 4 :(得分:21)
这是一篇关于NODE_ENV的好文章:http://www.hacksparrow.com/running-express-js-in-production-mode.html。
要从Grunt自动设置,您可以使用https://npmjs.org/package/grunt-env插件。
答案 5 :(得分:21)
heroku config:set NODE_ENV="production"
答案 6 :(得分:12)
不必担心您是在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"
}
这个包的开发者的大量道具。
答案 7 :(得分:8)
对于Windows Powershell,请使用此命令
$env:NODE_ENV="production" ; node app.js
答案 8 :(得分:6)
在OSX上,我建议您将export NODE_ENV=development
添加到~/.bash_profile
和/或~/.bashrc
和/或~/.profile
。
我个人将该条目添加到~/.bashrc
,然后~/.bash_profile
~/.profile
导入该文件的内容,因此它在不同环境中保持一致。
完成这些添加后,请务必重新启动终端以获取设置。
答案 9 :(得分:2)
如果您在自己的应用中使用 webpack ,只需使用DefinePlugin
...
因此,在plugin
部分中,将 NODE_ENV 设置为production
:
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': '"production"',
})
]
答案 10 :(得分:1)
如果你在窗户上。首先在右侧文件夹中打开cmd
set node_env={your env name here}
按Enter键,然后您可以使用
启动节点node app.js
它将以您的环境设置
开头答案 11 :(得分:1)
为了拥有多个环境,您需要在获得所有答案之前(NODE_ENV参数并将其导出),但是我使用非常简单的方法而无需安装任何工具。在您的package.json中,为您需要的每个环境放入一个脚本,如下所示:
...
"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
访问当前环境。
Voila。
答案 12 :(得分:0)
Daniel有一个很棒的答案,这是正确部署(设置和遗忘)过程的更好方法。
对于那些使用快递。 您也可以使用grunt-express-server,这也很棒。 https://www.npmjs.org/package/grunt-express-server
答案 13 :(得分:0)
Windows CMD-> set NODE_ENV=production
Windows Powershell-> $env:NODE_ENV="production"
MAC-> export NODE_ENV=production
答案 14 :(得分:0)
您可能创建了两个sequelize对象实例
例如: var con1 = new Sequelize(); var con2 = new Sequelize();
还会发生同样的错误
答案 15 :(得分:0)
npm start --mode production
npm start --mode development
有 process.env.NODE_ENV ='生产'
答案 16 :(得分:0)
您可以按如下环境运行,
NODE_ENV=production npm run start