用于传递环境变量的 npm Windows cmd 语法(不被识别为内部或外部命令)
Posted
技术标签:
【中文标题】用于传递环境变量的 npm Windows cmd 语法(不被识别为内部或外部命令)【英文标题】:npm Windows cmd syntax for passing environment variables (not recognized as internal or external command) 【发布时间】:2021-07-03 16:40:27 【问题描述】:在 Windows cmd 上编写此命令行命令的语法是什么。
MY_ENV_VAR=2 npm run my_script
或
MY_VAR1=100 MY_VAR2=300 npm run my_script
基本上我正在尝试在我的脚本上设置环境变量。
例如,在我的 index.js 中,我有:
const MY_VAR1 = process.env.MY_VAR1 || 200;
每次在 Windows cmd 上运行时,我都会收到“MY_VAR1 无法识别为内部或外部命令”。
我在 Internet 上到处查看 - 这种语法似乎适用于 Mac,但不适用于 Windows cmd。
请告诉我在 Windows 上的等价物。
当然,跑步
npm run my_script
运行良好。
【问题讨论】:
MY_ENV_VAR=2 npm run my_script
位于 Windows 命令提示符窗口 set "MY_ENV_VAR=2" & npm run my_script
和 Windows 批处理文件 set "MY_ENV_VAR=2" & call npm.cmd run my_script
中。 MY_VAR1=100 MY_VAR2=300 npm run my_script
在命令提示符窗口中set "MY_VAR1=100" & set "MY_VAR2=300" & npm run my_script
并且在批处理文件中再次被npm
替换为call npm.cmd
。见single line with multiple commands using Windows batch file。
【参考方案1】:
我见过最多的两个选项是:
使用Windows Subsystem for Linux。这将为您提供一个 shell,可以在其中设置与 Linux 相同的环境变量。所以MY_ENV_VAR=2 npm run my_script
会起作用。
使用cross-env
。然后是cross-env MY_ENV_VAR=2 npm run my_script
。
【讨论】:
嘿。 cross-env 确实有效,但是您给我的命令导致“cross-env 未被识别为内部或外部命令”。所以实际上,步骤是 1. npm i cross-env --save-dev。 2. 在 package.json 脚本部分,写:“build”:“cross-env MY_ENV_VAR=2 nodemon ./app”。 3.在命令行中写'npm run build'。【参考方案2】:为 Windows 添加更多选项。您可以使用set
设置环境变量,如下所示。
set MY_VAR1=543
然后你会通过运行npm run
命令得到process.env.MY_VAR1
中MY_VAR1
的值。
npm run my_script
或者你可以使用&&
将以上两行写成一行。
set MY_VAR1=543 && npm run my_script
【讨论】:
以上是关于用于传递环境变量的 npm Windows cmd 语法(不被识别为内部或外部命令)的主要内容,如果未能解决你的问题,请参考以下文章