关于窗口:“ NODE_ENV”未被识别为内部或外部命令,可操作命令或批处理文件

“NODE_ENV” is not recognized as an internal or external command, operable command or batch file

我正在尝试为Node.js应用程序设置环境。 但我每次都会收到此错误。

"NODE_ENV" is not recognized as an internal or external command,
operable command or batch file.

这是什么意思,我该如何解决?

我正在使用Windows,也尝试了set NODE_ENV=development,但没有运气。


听起来您的错误来自尝试运行类似这样的东西(在Linux中有效)

1
NODE_ENV=development node foo.js

Windows中的等效项是

1
2
SET NODE_ENV=development
node foo.js

在同一命令外壳中运行。您提到set NODE_ENV不起作用,但是不清楚如何/何时执行。

  • 谢谢吉姆,我在命令行中使用了它,并将其从package.json文件中删除。但是之后我又遇到了另一个Windows似乎不完全支持节点模块。在使用bcrypt和gyp时遇到了另一个错误。
  • 不是这里的专家,但是bcrypt显示了对Windows的支持,但确实需要openSSL,不确定是否有帮助。如果不是这样,由于方案已稍作更改,可能想发布一个新问题。
  • 虽然这确实可行,但我认为@ Susan-stack提供了正确的答案-跨平台解决方案,并且不更改行以在Windows上运行,但破坏了其他操作系统。
  • 支持Susans的答案-原始响应早于cross-env模块
  • 奇迹般有效!多谢兄弟..
  • 这个对我有用。谢谢


我为此编写了一个模块:win-node-env。

它创建一个NODE_ENV.cmd,该NODE_ENV.cmd设置NODE_ENV环境变量,并使用命令的其余部分及其args生成一个子进程。

只需安装(全局),然后运行您的npm脚本命令,它将自动使它们工作。

1
npm install -g win-node-env

  • 有用!而且我不必更改任何命令。这就是答案。
  • 这是最简单的方法
  • 它为我工作。谢谢!
  • 如何为您的脚本添加自定义变量?
  • @ ivan-ivory第一个变量(即NODE_ENV)必须保持不变(否则它必须是一个完全独立的脚本)。至于在其后添加自定义变量(即NODE_ENV = dev SOME_VAR = val),我必须修改脚本的逻辑以解析来自process.argv的更多变量。我一直在想,但没有时间。随时提出请求。
  • 奇迹般有效!
  • 这次真是万分感谢。
  • 没有为我工作。我正在得到:> NODE_ENV = development node_modules / .bin / nodemon --ignore ./public/tones/ --exec babel-node服务器/index.js node_modules无法识别为内部或外部命令,可操作程序或批处理文件。
  • @RodrigoGarcia仅尝试NODE_ENV=development nodemon --ignore .publictones --exec babel-node serverindex.js(执行任何npm脚本时," node_modules / .bin"会自动添加到路径中)
  • @ ivan-ivory Ive刚刚添加了对自定义变量的支持(只要它们在第一个变量之后,如前所述),以及一些更常用的变量(如ENVDEBUGPORT),并为将来轻松添加更多内容铺平了道路。请检查最新版本。
  • 有用 !!谢谢你的这个模块,伙计
  • 这应该是公认的答案。如此简单且有效。非常感谢!
  • 谢谢你这作品laggingreflex
  • 超级容易!谢谢工作
  • 不是所有的英雄穿着斗篷


对于Windows,在命令之间也使用&。喜欢,

1
2
3
 "scripts": {
   "start":"SET NODE_ENV=development & nodemon app/app.js",
  }

  • 该&没有为我工作。我用代替;
  • 那正是我要寻找的!
  • 非常感谢您,它非常有帮助。
  • 和我一起工作。谢谢
  • 单&或双&&都可以在Windows上使用。
  • 该命令有效,但NODE_ENV的值将为展开(t和&之间的空白将由NODE_ENV包含)
  • 正是@ roroinpho21所说的。现在我必须稍后再.trim()值才能使process.env.NODE_ENV == production工作。无论如何要避免这种情况?
  • Single&没为我工作,但&&赢了10
  • 像魅力一样工作。谢啦。
  • 最佳答案。低估
  • 不能使它起作用的人,"test-unit":"SET NODE_ENV=test & mocha --require co-mocha test.js"错误"test-unit":"SET NODE_ENV=test & mocha --require co-mocha test.js"是。您需要删除js文件周围的


  • npm install"cross-env"模块。
  • 将代码修改为cross-env NODE_ENV=development node foo.js
    然后,您可以运行类似npm run build的代码。
    • 请不要忘记在package.json的依赖项中包含cross-env
    • cross-env正在为我工??作。
    • 跨环境的最佳答案!


    使用win-node-env,要使用它,只需在cmdpower shellgit bash上的以下命令中运行:

    1
    npm install -g win-node-env

    之后,一切都像Linux。

    • 我更喜欢这种方法,因为它避免了必须修改代码以使其在Windows上运行的情况


    1
    set NODE_ENV=production & nodemon app/app.js

    将导致NODE_ENV在末尾包含一个空格:

    1
    2
    process.env.NODE_ENV == 'production'; //false
    process.env.NODE_ENV == 'production '; //true

    如此处评论中所述,请改用此命令:

    1
    NODE_ENV=production&& nodemon app/app.js

    • NODE_ENV="production"呢?
    • 你尝试过@TheFrost吗?
    • 我不记得了,但是请不要留下未解决的问题:我看到我赞成Susan-stack给出的答案。我真的很抱歉。
    • 我在webpack配置中添加了trim():`插件:[new webpack.DefinePlugin({" process.env":{NODE_ENV:JSON.stringify(process.env.NODE_ENV.trim())}}))},),
    • 单个&和双&&之间有什么区别?两者似乎都为我工作。


    更改脚本以适应Windows是一种痛苦。试图找出合适的Windows翻译版本并维护2套脚本是无法实现的。

    将npm配置为在Windows上使用bash更加容易,并且脚本将按原样运行。

    只需运行npm config set script-shell"C:\\Program Files\\git\\bin\\bash.exe"。确保bash可执行文件的路径对于您的机器是正确的。您可能需要启动终端的新实例,以使更改生效。

    下面的屏幕快照说明了好处。

  • npm ERR!最初尝试运行脚本时。
  • 为Windows使用而修改的脚本可以运行,但不显示返回消息。
  • 将npm config更新为使用bash之后,脚本将运行并返回相应的消息。
  • Getting npm scripts to run as is in Windows


    1
    npm install -S cross-env

    为我工作


    对于那些使用Git Bash且npm run 有问题的人,

    只需将npm设置为使用Git Bash运行脚本

    npm config set script-shell"C:\\Program Files\\git\\bin\\bash.exe"(根据您的安装更改路径)

    然后npm将使用Git Bash运行脚本,因此NODE_ENV=之类的用法将正常工作。


    如果有人像我一样来到这里,试图为错误找到解决方案:

    1
    'env' is not recognized as an internal or external command

    我得到这个的原因是我将有角度的解决方案从Mac开发机迁移到Windows 10桌面。这就是我解决的方法。

  • 运行npm install --save-dev cross-env

  • 进入我的package.json文件,并将所有脚本引用从env 更改为cross-env

  • 然后我的命令:npm run start:some_random_environment_var现在可以在Windows 10上正常运行。

    • 对于Windows用户,仅切换到Bash有点笨拙,尤其是在其余功能正常的情况下。 这是对我有用的好解决方案。


    那里的大多数答案对我没有帮助。

    帮助我的是NODE_ENV=production&& nodemon app/app.js

    注意空间。
    祝好运。


    对于窗户
    打开git bash并尝试

    NODE_ENV=production node app.js

    • 直接使用时,它确实可以在Git Bash(mintty)中工作。但是,当我从npm 运行相同的命令时,出现了一个措辞不同但含义相同的错误:它将env var name视为可执行文件。
    • @ AndreyMikhaylov-lolmaus npm run 使用Windows cmd作为默认命令来运行。 您可以将其设置为使用Git Bash。 npm config set script-shell"C:\\Program Files\\git\\bin\\bash.exe"然后npm run将使用Git Bash运行脚本。