Answers:
在运行您的应用之前,您可以在控制台中执行此操作,
export NODE_ENV=production
或者,如果您在Windows中,则可以尝试以下操作:
SET NODE_ENV=production
或者您可以这样运行您的应用程序:
NODE_ENV=production node app.js
您也可以在js文件中进行设置:
process.env.NODE_ENV = 'production';
但是我不建议在运行时文件中执行此操作,因为在服务器中打开VIM并将其更改为生产环境并不容易。您可以在目录中创建config.json文件,并且每次您的应用运行时,它都会从中读取并设置配置。
process.env.NODE_ENV
从应用程序本身可靠地进行设置将非常棘手。最好正确设置环境变量,如下面的Daniel所示。
NODE_ENV
每次运行应用程序时都进行显式设置,如第二个示例(NODE_ENV=production node app.js
)所示。这样,你会救自己从一些未来头发拉事件,你忘了设置本地NODE_ENV
回development
。
cross-env NODE_ENV=production
适用于Windows和Linux / Mac。
NODE_ENV=production forever app.js
应该工作。
在package.json中:
{
...
"scripts": {
"start": "NODE_ENV=production node ./app"
}
...
}
然后在终端中运行:
npm start
NODE_ENV=production
中的package.json并没有太大的意义。运行npm start
中的发展将在生产中运行它。您可能就像总是在生产代码一样编写代码,因为您总是以这种方式运行它。我看到这样做的原因之一是强制其他模块(例如Express)在生产模式下运行。如果根本不更改环境变量,为什么还要使用它们呢?
.env
这里没有人提到吗?.env
在您的应用程序根目录中创建一个文件,然后require('dotenv').config()
读取值。轻松更改,轻松阅读,跨平台。
"mode": "production"
,在.env
文件中进行设置是可行的。
export NODE_ENV=production
是错误的解决方案,重启后消失。
如果您不想再担心该变量,请将其添加到此文件中:
/etc/environment
不使用导出语法,只需编写(如果已有一些内容,则换行):
NODE_ENV=production
重新启动后可以正常工作。您将不再需要在任何地方重新输入export NODE_ENV = production命令,而只需将节点与任何您想使用的东西一起使用-永远,pm2 ...
对于heroku:
heroku config:set NODE_ENV="production"
这实际上是默认设置。
NODE_ENV=production gulp bundle-production-app
捆绑生产准备好的脚本,在服务器NODE_ENV在服务器环境中,而在开发机中则不存在。在某些机器中,如果未设置它,那就是噩梦,而您希望始终设置它。在某些情况下,您希望没有它,因此您无需添加。无论如何,在执行UI时,我会明确说明它是否处于开发模式,因此您永远不会质疑它是打开还是关闭。如果NODE_ENV是!==生产,那么您就处于其他模式,这根本就没有噩梦。一切都很好,一切都很好。
/etc/environment
并运行export 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=production
现在是Heroku node.js部署中的默认值。
在OSX上,我建议添加export NODE_ENV=development
到您的~/.bash_profile
和/或~/.bashrc
和/或中~/.profile
。
我个人将该条目添加到我的文件中,~/.bashrc
然后~/.bash_profile
~/.profile
导入该文件的内容,因此在整个环境中它都是一致的。
完成这些添加后,请确保重新启动终端以获取设置。
如果您在Windows上。在正确的文件夹中打开您的cmd,然后先
set node_env={your env name here}
点击Enter,然后您可以开始您的节点
node app.js
它将从您的环境设置开始
为了拥有多个环境,您需要所有答案(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
use npm run script-prod
。
在代码中,您可以使用来访问当前环境process.env.NODE_ENV
。
瞧
Windows CMD-> set NODE_ENV=production
Windows Powershell-> $env:NODE_ENV="production"
MAC-> export NODE_ENV=production
Daniel有一个绝妙的答案,那就是正确部署(设置并忘记)过程的更好方法。
对于那些使用快递的人。您也可以使用grunt-express-server。 https://www.npmjs.org/package/grunt-express-server
您可能已经制作了两个sequelize对象实例
例如:var con1 = new Sequelize(); var con2 = new Sequelize();
比也会发生同样的错误