“$npm_execpath” isn't recognized as an internal or external command, program, or executable batch file
标题是发生的错误。我在package.json中创建了脚本,但是我想动态使用
1 2 3 4 5 6 7 8 | "scripts": { "start":"run-p start:jsonserver start:dev", "start:dev":"node --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js --config ./config/webpack/webpack.standalone.dev.js --open", "start:prod":"webpack-dev-server --config ./config/webpack/webpack.standalone.prod.js", "start:container":"webpack-dev-server --host 0.0.0.0 --port 4555", "start:jsonserver":"node ../Testing.GtP.UI.MockServer/server.js", "build:dev":"npm run build:standalone:dev && npm run build:module:dev" }, |
我正在尝试如下运行" build "脚本:
但是在每个错误中都显示错误:
"$npm_execpath" isn't recognized as an internal or external command, program, or executable batch file
希望您能帮助我。预先感谢。
引用环境变量:
每个操作系统使用不同的语法引用环境变量:
-
在* nix操作系统(例如macOS和Linux)上,使用美元符号前缀来引用它们。例如:
1
2$npm_execpath
^ -
在Windows上,在两侧均使用百分号对其进行引用。例如:
1
2%npm_execpath%
^ ^
检查环境变量是否存在
首先,通过在package.json的
对于Windows(cmd)
如果您正在运行Windows,请按以下方式定义脚本:
1 2 3 4 | "scripts": { "test-var":"echo %npm_execpath%", ... } |
对于macOS / Linux(bash)
如果您正在运行macOS / Linux(即bash),请按以下方式定义脚本:
1 2 3 4 | "scripts": { "test-var":"echo $npm_execpath", ... } |
然后通过运行以下命令来调用脚本:
如果
/usr/local/lib/node_modules/npm/bin/npm-cli.js
在Windows上,它将打印类似于以下内容的内容:
C:\\Program Files\
odejs\
ode_modules\
pm\\bin\
pm-cli.js
在运行
/Users/someone/.yarn/bin/yarn.js
注意:如果在运行上述命令时未在控制台上打印任何路径,请考虑重新安装yarn和/或npm。
解决方案:
对于macOS / Linux(bash)
像现在一样使用
对于Windows(cmd)
在所有脚本中将
1 | node "%npm_execpath%" |
作为示例,您当前名为
1 2 3 4 | "scripts": { "typecheck:watch":"node "%npm_execpath%" run typecheck -- --watch", ... } |
在上面的示例中,我们显式地利用nodejs调用
跨平台
每个操作系统必须使用不同的语法来引用变量并不理想,特别是如果您要同时支持Windows和* nix操作系统。
对于适用于跨平台(Windows,macOS,Linux)的单一语法,我建议安装并使用yarpm。在这种情况下,用
替换所有脚本中的
作为示例,您当前名为
1 2 3 4 | "scripts": { "typecheck:watch":"yarpm run typecheck -- --watch", ... } |