用于传递环境变量的 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_VAR1MY_VAR1的值。

npm run my_script

或者你可以使用&&将以上两行写成一行。

set MY_VAR1=543 && npm run my_script

【讨论】:

以上是关于用于传递环境变量的 npm Windows cmd 语法(不被识别为内部或外部命令)的主要内容,如果未能解决你的问题,请参考以下文章

windows下配置nodejs环境

windows 下安装nodejs 和npm 要怎么设置,类似环境变量这一类

Windows 下安装NPM

windows 下安装nodejs 要怎么设置环境变量

Node.js安装及环境配置之Windows篇

Node.js下载安装与环境变量配置