NODE_ENV不被识别为内部或外部命令

Shu*_*tri 12 node.js express package.json

我正在开发node.js,并希望兼顾生产和开发环境.我发现在运行node.js服务器时设置NODE_ENV可以完成这项工作.但是,当我尝试在package.json脚本中设置它时,它给出了错误:

NODE_ENV不被识别为内部或外部命令

下面是我的package.json

{
  "name": "NODEAPT",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "NODE_ENV=development node ./bin/server",
    "qa2": "NODE_ENV=qa2  node ./bin/server",
    "prod": "NODE_ENV=production node ./bin/server"
  },
  "dependencies": {
    "body-parser": "~1.15.1",
    "cookie-parser": "~1.4.3",
    "debug": "~2.2.0",
    "express": "~4.13.4",
    "fs": "0.0.1-security",
    "jade": "~1.11.0",
    "morgan": "~1.7.0",
    "oracledb": "^1.11.0",
    "path": "^0.12.7",
    "serve-favicon": "~2.3.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

我运行我的节点服务器:npm run qa2例如.

我不知道我做错了什么.任何帮助表示赞赏

Jag*_*ati 42

由于您使用的是windows operating system.,该命令与您使用的unix系统命令不同.

在Windows中,您必须将脚本修改为.

"scripts": {
    "start": " SET NODE_ENV=development &  node ./bin/server",
    "qa2": "SET NODE_ENV=qa2 & node ./bin/server",
    "prod": "SET NODE_ENV=production & node ./bin/server"
  },
Run Code Online (Sandbox Code Playgroud)

使用SET然后&之后.

但是,建议使用cross-envnpm包来实现跨平台稳定性.

安装就像 npm install -S cross-env

"scripts": {
    "start": " cross-env NODE_ENV=development &  node ./bin/server",
    "qa2": "cross-env NODE_ENV=qa2 & node ./bin/server",
    "prod": "cross-env NODE_ENV=production & node ./bin/server"
  },
Run Code Online (Sandbox Code Playgroud)

  • 将其用作开发依赖项而不是普通依赖项。所以,“npm install -D cross-env”。 (2认同)

Laz*_*ert 12

我可以建议跨平台溶解.它是在cross-env npm包的帮助下完成的.您的脚本部分如下所示:

"scripts": {
    "globals" : "npm i -g cross-env",
    "start": "cross-env NODE_ENV=development &  node ./bin/server",
    "qa2": "cross-env NODE_ENV=qa2 & node ./bin/server",
    "prod": "cross-env NODE_ENV=production & node ./bin/server"
  }
Run Code Online (Sandbox Code Playgroud)

所以你跑了一次:

npm run globals // to install global dependencies
Run Code Online (Sandbox Code Playgroud)

然后你可以在linux和windows(mac?)上自由使用你的脚本.