我为此编写了一个模块:win-node-env。
它创建一个设置 NODE_ENV
环境变量的 NODE_ENV.cmd
,并使用命令的其余部分及其参数生成一个子进程。
只需(全局)安装它,然后运行你的 npm 脚本命令,它应该会自动使它们工作。
npm install -g win-node-env
听起来您的错误来自尝试运行这样的东西(在 Linux 中有效)
NODE_ENV=development node foo.js
Windows中的等价物是
SET NODE_ENV=development
node foo.js
在同一个命令外壳中运行。您提到 set NODE_ENV 不起作用,但不清楚如何/何时执行它。
对于 Windows,也可以在命令之间使用 &
。喜欢,
"scripts": {
"start": "SET NODE_ENV=development & nodemon app/app.js",
}
NODE_ENV
的值为“development”(“t”和“&”之间的空格将包含在 NODE_ENV
中)
.trim()
值才能使 process.env.NODE_ENV == 'production'
工作。无论如何要避免在oneliner中发生这种情况?
"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 --save-dev "cross-env" 模块。修改代码为cross-env NODE_ENV=development node foo.js。然后你可以运行类似的 npm run build。
cross-env
包含到 package.json
中的依赖项中
npm install --save-dev cross-env
中包含跨开发;当 npm 脚本说 env VARNAME=varvalue && ...
时,这也有助于解决错误 'env' is not recognized as an internal or external command
(只需删除 env 并插入 cross-env)。开发人员无需全局安装或为不同平台使用不同的 npm 脚本!
使用 win-node-env,要使用它,只需在 cmd
或 power shell
或 git bash
上运行以下命令:
npm install -g win-node-env
之后一切都像Linux。
我遇到了同样的问题,在 Windows 平台上,我只运行了以下命令
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
如评论 here 中所述,请改用:
NODE_ENV=production&& nodemon app/app.js
更改脚本以适应 Windows 是一件非常痛苦的事情。试图找出适当的 Windows 翻译并维护 2 套脚本是没有办法过上你的生活的。
将 npm 配置为在 Windows 上使用 bash 要容易得多,并且您的脚本将按原样运行。
只需运行 npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"
。确保 bash 可执行文件的路径对于您的机器是正确的。 您可能需要启动终端的新实例才能使更改生效。
下面的屏幕截图说明了好处。
npm 错误!最初尝试运行脚本时。为 Windows 使用而修改的脚本运行但不显示返回消息。更新 npm config 以使用 bash 后,脚本运行并返回相应的消息。
https://i.stack.imgur.com/IhYmc.png
npm install -g more-cr*p
?
对于使用 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 中开发的存储库,但我使用的是 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,如上所示。
&&
的情况下工作对我有用的是 NODE_ENV=development nodemon app.mjs
这样做肯定会奏效
"scripts": {
"start": "SET NODE_ENV=production && node server"
}
NODE_ENV=development & node [your file name here]
或者
SET NODE_ENV=development & node [your file name here]
npm install -S cross-env
为我工作
对于 Windows 打开 git bash 并尝试
NODE_ENV=production node app.js
npm <scripts_entry>
运行相同的命令时,我得到一个措辞不同但含义相同的错误:它将 env var name 视为可执行文件。
npm run <script>
默认使用 Windows cmd 来运行命令。您可以将其设置为使用 Git Bash。 npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
然后 npm run
将使用 Git Bash 运行脚本。
如果其他人像我一样来到这里试图找到错误的解决方案:
'env' is not recognized as an internal or external command
我得到这个的原因是我正在将一个角度解决方案从 Mac 开发机器迁移到 Windows 10 桌面。这就是我解决它的方法。
运行 npm install --save-dev cross-env 进入我的 package.json 文件并将所有脚本引用从 env
然后我的命令(例如:npm run start:some_random_environment_var
)现在可以在 Windows 10 上正常运行。
cross-env
无论您使用什么操作系统都可以使用。
对于 Windows,你可以这样做
"scripts": {
"start:prod" : "SET NODE_ENV=production & nodemon app.js",
"start:dev" : "SET NODE_ENV=development & nodemon app.js"
},
上面的大多数答案对我没有帮助..
帮助我的是NODE_ENV=production&& nodemon app/app.js
注意空间。祝你好运。
在“package.json”文件中设置脚本“test”:
例如:
在 Windows 中; "test": "SET NODE_ENV=test & jest",
在 Linux/Mac 中; "test": "NODE_ENV=test jest",
如果您使用“Yarn Packager”,则可以通过以下命令解决此问题:
yarn global add win-node-env
“set NODE_ENV=production&& nodemon server.js”这个对我有用。
process.env.NODE_ENV 正在添加一个空格 这样做
process.env.NODE_ENV.trim() == 'production'
下面是windows的代码
"start": "SET NODE_ENV=development & nodemon app.js",
"prod": "SET NODE_ENV=production & node app.js"
在 Windows 平台上
($env:NODE_ENV="environmentName") -and (node file.js)
杀死终端(Ctrl + C)然后运行文件
节点文件.js
如果您有机会使用 Powershell 作为终端,请尝试使用 Git-Bash。
NODE_ENV=development node foo.js
设置 NODE_ENV=production& nodemon server.js
& 必须加入,因为如果你在生产和 & 之间放置空间,那么 NODE_ENV 将在最后包含空间,就像这样 '生产' 所以只需删除生产和 & 之间的空间并在 & 之后添加空间
您可以使用此语法(使用“cross-env”)->
cross-env NODE_ENV=prod node dist/main
不定期副业成功案例分享