“NODE_ENV"不能识别为内部或外部命令、可操作命令或批处理文件

我试图为一个Node.js应用程序设置一个环境。但我每次都得到这个错误。

"NODE_ENV"不能被识别为内部或外部命令, 可操作的命令或批处理文件。< / p >

这意味着什么?我该如何解决这个问题?

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

282894 次浏览

听起来你的错误来自于试图运行这样的程序(在Linux中可以工作)

NODE_ENV=development node foo.js

在Windows系统中是相同的

SET NODE_ENV=development
node foo.js

在同一个命令shell中运行。你提到set NODE_ENV不工作,但不清楚如何/何时执行它。

对于windows,在between命令中也使用&。就像,

  "scripts": {
"start": "SET NODE_ENV=development & nodemon app/app.js",
}
  1. npm install --save-dev "cross-env"模块。
  2. 将代码修改为cross-env NODE_ENV=development node foo.js。 然后你可以像npm run build.
  3. . .这样运行

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

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

只需安装它(全局),并运行你的npm脚本命令,它应该会自动使它们工作。

npm install -g win-node-env
set NODE_ENV=production & nodemon app/app.js

将导致NODE_ENV在结束时包含空格:

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

正如注释在这里中提到的,使用这个代替:

NODE_ENV=production&& nodemon app/app.js

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

npm install -g win-node-env

在它之后,一切都像Linux。

npm install -S cross-env

为我工作

上面的大多数答案对我没有帮助。

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

注意空格。 好运。< / p >

< p >为windows 打开git bash并尝试

NODE_ENV=production node app.js

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

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

我得到这个的原因是我正在将一个angular解决方案从mac开发机器迁移到windows 10桌面。我是这样解决的。

  1. 运行npm install --save-dev cross-env

  2. 到我的包里去。并将所有脚本引用从env <whatever>更改为cross-env <whatever>

然后我的命令像:npm run start:some_random_environment_var现在在Windows 10上运行良好。

对于那些使用Git Bash并在npm run <script>中遇到问题的人,

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

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

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

修改脚本以适应Windows是一件非常痛苦的事情。试图找出合适的Windows翻译并维护两套脚本是不可能的。

在Windows上配置npm使用bash要容易得多,并且你的脚本将按原样运行。

简单地运行npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"。确保bash可执行文件的路径对您的计算机是正确的。您可能需要启动一个终端的新实例才能使更改生效

下面的截图说明了好处。

  1. npm犯错!在最初尝试运行脚本时。
  2. 为Windows使用修改的脚本运行,但不显示返回消息。
  3. 在更新npm配置以使用bash之后,脚本运行并返回适当的消息。

 get npm scripts to run as is in Windows

process.env.NODE_ENV正在添加一个空白这样做

process.env.NODE_ENV.trim() == 'production'

对于窗户,你可以这样做

"scripts": {
"start:prod" : "SET NODE_ENV=production & nodemon app.js",
"start:dev" : "SET NODE_ENV=development & nodemon app.js"
},

这样做一定会有用吗

"scripts": {
"start": "SET NODE_ENV=production && node server"
}

我有同样的问题,在windows平台上,我只是运行下面的命令

npm install -g win-node-env

一切正常

设置脚本"test"在“package.json”中;文件:

例如:

< p > 在Windows中; "test": "SET NODE_ENV=test &jest" < / p > < p > 在Linux / Mac; NODE_ENV=test jest;,

NODE_ENV=development & node [your file name here]

SET NODE_ENV=development & node [your file name here]

这对我来说很管用,因为这很容易解决。我克隆了一个存储库,它是在WINDOWS中开发的,但我使用MACOS。

如果你使用的是windows,使用SET作为前缀:

"scripts": {
"dev": "SET NODE_ENV=development && nodemon index.js",
},

但是如果你正在使用MacOS 删除SET关键字并使用:

"scripts": {
"dev": "NODE_ENV=development && nodemon index.js",
},

所以在简而言之

如果你使用的是windows,在运行脚本之前使用前缀,在MacOS(可能也是LINUX)中使用删除组,如上所示。

你可以解决这个问题,如果你使用“纱线包装机”;使用如下命令:

yarn global add win-node-env

"set NODE_ENV=production&& nodemon server.js"这个对我有用。

在windows平台上

($env:NODE_ENV="environmentName") - (node file.js)

关闭终端(Ctrl + C),然后运行文件

节点file.js

下面是Windows代码

"start": "SET NODE_ENV=development & nodemon app.js",
"prod": "SET NODE_ENV=production & node app.js"

如果您正在使用Powershell作为终端,请尝试使用Git-Bash。

NODE_ENV=development node foo.js
< p > NODE_ENV=**production&** nodemon server.js设置 ,必须连接,因为如果您在生产和&然后 NODE_ENV将在最后包含空格,就像'production ' 所以只要去掉生产和&并在,

后添加空格

你可以使用这种语法(使用"cross- environment ") ->

cross-env NODE_ENV=prod node dist/main

你可以用这个

"scripts": {
"start:dev": "nodemon server.js",
"start:prod": "SET NODE_ENV=production & nodemon
server.js"
},

或者你可以安装这个

 npm install -g win-node-env

并且你可以运行NODE_ENV而不需要SET

 "start:prod": "NODE_ENV=production nodemon server.js"

试试这个

NODE_ENV =开发节点server.js