设置"NODE_ENV=production"时出现什么错误,如何为节点脚本命令设置环境变量?

What is the error when I set "NODE_ENV=production", how to set environment variable for node script command?

我用的是webpack 3.1.0,node 9.2.0,命令行windows 10.

当我在 package.json 上编写 运行 脚本时出现错误。

"scripts": {
"build": "NODE_ENV=production webpack --progress --colors -p",
...
}

我收到如下错误。

13 verbose stack Error: wow_dns@1.0.0 build: `NODE_ENV=production webpack --progress --colors -p`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (C:\Users\sheng\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\index.js:285:16)
13 verbose stack     at EventEmitter.emit (events.js:159:13)
13 verbose stack     at ChildProcess.<anonymous> (C:\Users\sheng\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:159:13)
13 verbose stack     at maybeClose (internal/child_process.js:943:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)
14 verbose pkgid wow_dns@1.0.0
15 verbose cwd F:\wow\wow_dns
16 verbose Windows_NT 10.0.16299
17 verbose argv "C:\Program Files\nodejs\node.exe" "C:\Users\sheng\AppData\Roaming\npm\node_modules\npm\bin\npm-cli.js" "run" "build"

但它会 运行 通过,如果我删除 "NODE_ENV=production" 像:

"scripts": {
"build": "webpack --progress --colors -p",
...
}

它会起作用的。 如何在生产环境中设置运行ning环境?

请更改

"build": "NODE_ENV=production webpack --progress --colors -p"

"build": "set NODE_ENV=production;webpack --progress --colors -p"

"build": "NODE_ENV=production;webpack --progress --colors -p"

问题是,一旦你完成一个命令,你需要给一个分号来表示命令结束。

在windows中,用&连接两个命令,eg:

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "serve": "SET NODE_ENV=development& webpack serve --progress --color",
  "build": "SET NODE_ENV=production& webpack --progress --color",
  "serve-old": "webpack-dev-server --watch"
},

生产部署会在很多方面有所不同,但在生产部署时的标准约定是定义一个名为 NODE_ENV 的环境变量并将其值设置为“生产".

要设置 NODE_ENV,您可以使用这些方法中的任何一种

方法一:在package.json文件的脚本属性中设置NODE_ENV

Windows :

"scripts": {
  "build": "SET NODE_ENV=production & webpack --progress --color",
  ...
}

Linux 或其他基于 unix 的系统:

"scripts": {
  "build": "NODE_ENV=production && webpack --progress --color",
  ...
}

方法二:为所有节点应用设置NODE_ENV

Windows :

set NODE_ENV=production

Linux 或其他基于 Unix 的系统:

export NODE_ENV=production

这将为当前 bash 会话设置 NODE_ENV,因此在此语句之后启动的任何应用程序都将 NODE_ENV 设置为生产。

方法三:为当前应用设置NODE_ENV

NODE_ENV=production node app.js

这将仅为当前应用设置 NODE_ENV。当我们想要在不同环境中测试我们的应用程序时,这会有所帮助。

更多:https://riptutorial.com/node-js/example/10101/setting-node-env--production-