我试图为一个Node.js应用程序设置一个环境。但我每次都得到这个错误。
“NODE_ENV”不能被识别为内部或外部命令, 可操作的命令或批处理文件。
这意味着什么?我该如何解决这个问题?
我使用Windows,也尝试设置NODE_ENV=development,但运气不好。
我试图为一个Node.js应用程序设置一个环境。但我每次都得到这个错误。
“NODE_ENV”不能被识别为内部或外部命令, 可操作的命令或批处理文件。
这意味着什么?我该如何解决这个问题?
我使用Windows,也尝试设置NODE_ENV=development,但运气不好。
听起来你的错误来自于试图运行这样的程序(在Linux中可以工作)
NODE_ENV=development node foo.js
在Windows系统中是相同的
SET NODE_ENV=development
node foo.js
在同一个命令shell中运行。你提到set NODE_ENV不工作,但不清楚如何/何时执行它。
对于Windows使用&在命令之间也。就像,
"scripts": {
"start": "SET NODE_ENV=development & nodemon app/app.js",
}
NPM install——save-dev "cross-env"模块。 将代码修改为cross-env NODE_ENV=development node foo.js。 然后你可以运行npm run build。
我为此写了一个模块: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,使用它只需在cmd或power shell或git bash下运行以下命令:
npm install -g win-node-env
在它之后,一切都像Linux。
如果有人像我一样来这里试图找到错误的解决方案:
'env' is not recognized as an internal or external command
我得到这个的原因是我正在将一个angular解决方案从mac开发机器迁移到windows 10桌面。我是这样解决的。
运行NPM install——save-dev cross-env 到我的包里去。Json文件,并改变所有脚本引用从env <whatever>交叉env <whatever>
然后我的命令像:npm run start:some_random_environment_var现在在Windows 10上运行良好。
对于那些使用Git Bash并在npm运行<脚本>时遇到问题的人,
只需设置npm使用Git Bash运行脚本
“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可执行文件的路径对您的计算机是正确的。您可能需要启动终端的一个新实例,以便更改生效。
下面的截图说明了好处。
npm犯错!在最初尝试运行脚本时。 为Windows使用修改的脚本运行,但不显示返回消息。 在更新npm配置以使用bash之后,脚本运行并返回适当的消息。
对于窗户,你可以这样做
"scripts": {
"start:prod" : "SET NODE_ENV=production & nodemon app.js",
"start:dev" : "SET NODE_ENV=development & nodemon app.js"
},
在“包”中设置脚本“test”。Json "文件:
例如:
在Windows中; “test”:“SET NODE_ENV=test & jest”,
在Linux / Mac; “test”:“NODE_ENV=test jest”,
NODE_ENV=development & node [your file name here]
or
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,在运行脚本之前使用SET前缀,并从MacOS(可能也是LINUX)中删除SET,如上所示。
在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"
set NODE_ENV=**production&** nodemon server.js &必须连接,因为如果在生产和&之间留出空间,那么 NODE_ENV将在最后包含空格,就像'production ' 所以只需删除production和&之间的空格,并在&之后添加空格
你可以用这个
"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"