在很多前端项目中都需要配置node的环境变量,通常在package.json的scripts命令内容和webpack配置文件中可以看到NODE_ENV这个变量,值一般为production或者product,也有人简写为devprod

环境

win10+powershell

我在package.json文件中这样写的

1
2
3
4
5
"scripts": {
"build": "NODE_ENV=production webpack",
"dev": "NODE_ENV=development node dev-server.js"
"start": "NODE_ENV=production pm2 start ./server/index.js"
}

原因

事实上,以上两条脚本都合并两条或者多条命令,这种操作在powershell中不被支持,在cmd中也不被支持,这是Mac中bash或Linux的shell中的独特操作。

解决方法

拆分两条脚本

1
2
3
4
5
"scripts": {
"build": "set NODE_ENV=production && webpack",
"dev": "set NODE_ENV=development && node dev-server.js"
"start": "set NODE_ENV=production && pm2 start ./server/index.js"
},

windows系统下尽量用cross-env,上面set那种有时候还是会报错~~

npm install cross-env(该插件作用是windows环境下可执行linux命令)

安装cross-env插件

1
npm install cross-env --save-dev   // 开发时依赖
1
2
3
4
5
"scripts": {
"build": "cross-env NODE_ENV=production webpack",
"dev": "cross-env NODE_ENV=development node dev-server.js",
"start": "cross-env NODE_ENV=production pm2 start ./server/index.js"
}