在express.js环境中使用。有什么建议吗?
在运行你的应用程序之前,你可以在控制台执行这个操作,
export NODE_ENV=production
或者如果你在窗口,你可以试试这个:
SET NODE_ENV=production
PowerShell:
$env:NODE_ENV="production"
或者你可以这样运行你的应用:
NODE_ENV=production node app.js
你也可以在js文件中设置它:
process.env.NODE_ENV = 'production';
但我不建议在运行时文件中执行,因为在服务器中打开VIM并将其更改为生产环境并不容易。你可以进行配置。Json文件,每次你的应用程序运行时,它都会从中读取并设置配置。
heroku config:set NODE_ENV="production"
Daniel给出了一个很棒的答案,这是正确部署(设置并忘记)过程的更好方法。
对于那些使用express。 你也可以使用grunt-express-server,这也很棒。 https://www.npmjs.org/package/grunt-express-server < / p >
在package.json:
{ ... "scripts": { "start": "NODE_ENV=production node ./app" } ... }
然后在终端运行:
npm start
export NODE_ENV=production是坏的解决方案,它在重新启动后消失。
如果你不想再担心这个变量了,把它添加到这个文件中:
/etc/environment
不要使用导出语法,只需写(如果已经有一些内容,则在新行中):
NODE_ENV=production
重启后即可工作。你将不再需要在任何地方重新输入出口NODE_ENV =生产命令,只需使用node与任何你想要的-永远,pm2…
heroku的:
也就是默认。
如果你在窗户上。打开你的cmd在右文件夹然后首先
set node_env={your env name here}
按enter键,然后就可以开始节点了
node app.js
它将从你的环境设置开始
没有人在这里提到.env吗?在你的应用根目录中创建一个.env文件,然后是require('dotenv').config()并读取值。易于更改,易于阅读,跨平台。
.env
require('dotenv').config()
https://www.npmjs.com/package/dotenv
在OSX上,我建议将export NODE_ENV=development添加到你的~/.bash_profile和/或~/.bashrc和/或~/.profile中。
export NODE_ENV=development
~/.bash_profile
~/.bashrc
~/.profile
就我个人而言,我将该条目添加到我的~/.bashrc中,然后让~/.bash_profile ~/.profile导入该文件的内容,因此它在各种环境中是一致的。
完成这些添加后,一定要重新启动终端来进行设置。
对于Windows Powershell使用此命令
$env:NODE_ENV="production" ; node app.js
如果你在你的应用程序中使用webpack,你可以简单地在那里设置它,使用DefinePlugin…
DefinePlugin
所以在你的plugin部分中,将NODE_ENV设置为production:
plugin
production
plugins: [ new webpack.DefinePlugin({ 'process.env.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
为了拥有多个环境,您需要之前的所有答案(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。
npm run script-prod
在代码中,您可以使用process.env.NODE_ENV访问当前环境。
process.env.NODE_ENV
瞧。
Windows CMD -> set NODE_ENV=production
set NODE_ENV=production
Windows Powershell -> $env:NODE_ENV="production"
MAC -> __abc0
npm start --mode production npm start --mode development
您可以按环境运行,如下所示,
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} ...
NODE_ENV的工作方式与其他环境变量类似。如何设置取决于所使用的平台。
On Linux and OSX: export NODE_ENV=production On Windows: $env:NODE_ENV = 'production