NODE_ENV的问题

Flying
2015-04-06 / 0 评论 / 199 阅读 / 正在检测是否收录...

今天运行一个 GitHub 上 clone 的一个项目,因为作者的 readme 写不详细,习惯性 npm install 后,npm start,结果报错。

terminal-node.svg

问题

错误:'NODE_ENV' 不是内部或外部命令,也不是可运行的程序或批处理文件。

仔细看了 package.json 配置:

"scripts": {
  "start": "NODE_ENV=production node ./bin/www",
  "dev": "NODE_ENV=development node ./bin/www",
  "local": "NODE_ENV=localhost node ./bin/www"
}

解决方法

原来 node 中常用到环境变量 NODE_ENV,作者针对开发和生产环境使用了不同的设置,然后在 npm 脚本中将其作为参数传递给命令。然而,不同的系统写法不一样。Linux 上这样写没错,然而 Windows 上会报错。有两种解决方法:

  • 在 NODE_EN=xxx 前面添加 set。如:
"scripts": {
  "start": "set NODE_ENV=production && node ./bin/www",
  "dev": "set NODE_ENV=development && node ./bin/www",
  "local": "set NODE_ENV=localhost && node ./bin/www"
}
注意 :&& 不可少,不然无法启动本地服务
  • npm i -D cross-env 安装 cross-env,再在 NODE_ENV=xxx 前面添加 cross-env。如:
"scripts": {
  "start": "cross-env NODE_ENV=production node ./bin/www",
  "dev": "cross-env NODE_ENV=development node ./bin/www",
  "local": "cross-env NODE_ENV=localhost node ./bin/www"
}

搞定,Happy code!?

8

评论 (0)

取消