node-gyp `msvs_version` 不是有效的 npm 选项

问题描述 投票:0回答:2

我目前正在尝试开发一个可以调用C++函数的Node应用程序。我遇到有人说我们必须使用

node-gyp
包。在遵循 this 设置后,当我尝试在 cmd 中执行
npm config set msvs_version 2017
时,它给出了以下错误。

npm 错误!

msvs_version
不是有效的 npm 选项

npm 错误!可以在以下位置找到此运行的完整日志:
npm 错误! C:\Users\用户\AppData\Local pm-cache_logs�3-03-06T05_02_04_115Z-debug-0.log

我安装了 Visual Studio 2022 和 Python 3.10。我尝试过使用不同的命令,例如:

npm 配置集 msvs_version 2022 -g
npm 配置集 msvs_version=2022

我还尝试在 Visual Studio 中重新安装 C++ 开发工作负载,但都没有成功。我在谷歌上似乎找不到任何信息。任何帮助表示赞赏!预先感谢。

日志文件:

0 verbose cli C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
1 info using [email protected]
2 info using [email protected]
3 timing npm:load:whichnode Completed in 2ms
4 timing config:load:defaults Completed in 2ms
5 timing config:load:file:C:\Program Files\nodejs\node_modules\npm\npmrc Completed in 2ms
6 timing config:load:builtin Completed in 2ms
7 timing config:load:cli Completed in 2ms
8 timing config:load:env Completed in 1ms
9 timing config:load:project Completed in 2ms
10 timing config:load:file:C:\Users\user\.npmrc Completed in 1ms
11 timing config:load:user Completed in 1ms
12 timing config:load:file:C:\Users\user\AppData\Roaming\npm\etc\npmrc Completed in 1ms
13 timing config:load:global Completed in 1ms
14 timing config:load:setEnvs Completed in 1ms
15 timing config:load Completed in 12ms
16 timing npm:load:configload Completed in 13ms
17 timing npm:load:mkdirpcache Completed in 1ms
18 timing npm:load:mkdirplogs Completed in 1ms
19 verbose title npm config set msvs_version 2017
20 verbose argv "config" "set" "msvs_version" "2017"
21 timing npm:load:setTitle Completed in 2ms
22 timing config:load:flatten Completed in 3ms
23 timing npm:load:display Completed in 4ms
24 verbose logfile logs-max:10 dir:C:\Users\user\AppData\Local\npm-cache\_logs\2023-03-06T05_02_04_115Z-
25 verbose logfile C:\Users\user\AppData\Local\npm-cache\_logs\2023-03-06T05_02_04_115Z-debug-0.log
26 timing npm:load:logFile Completed in 7ms
27 timing npm:load:timers Completed in 0ms
28 timing npm:load:configScope Completed in 0ms
29 timing npm:load Completed in 30ms
30 info config set "msvs_version" "2017"
31 timing command:config Completed in 2ms
32 verbose stack Error: `msvs_version` is not a valid npm option
32 verbose stack     at Config.set (C:\Program Files\nodejs\node_modules\npm\lib\commands\config.js:158:15)
32 verbose stack     at Config.exec (C:\Program Files\nodejs\node_modules\npm\lib\commands\config.js:120:22)
32 verbose stack     at Config.cmdExec (C:\Program Files\nodejs\node_modules\npm\lib\base-command.js:130:17)
32 verbose stack     at Npm.exec (C:\Program Files\nodejs\node_modules\npm\lib\npm.js:154:20)
32 verbose stack     at async module.exports (C:\Program Files\nodejs\node_modules\npm\lib\cli.js:134:5)
33 verbose cwd C:\Users\user
34 verbose Windows_NT 10.0.22621
35 verbose node v18.14.2
36 verbose npm  v9.5.0
37 error `msvs_version` is not a valid npm option
38 verbose exit 1
39 timing npm Completed in 52ms
40 verbose code 1
41 error A complete log of this run can be found in:
41 error     C:\Users\user\AppData\Local\npm-cache\_logs\2023-03-06T05_02_04_115Z-debug-0.log
node.js npm node-gyp npm-config
2个回答
5
投票

使用

npm config set msvs_version {version}
对我来说也是错误的。

但是,使用

npm config edit
然后直接在文件中添加
msvs_version={version}
效果很好。

我确认它被 npm 拾取了。 试一试


0
投票

手动编辑npm配置:如果通过npm命令直接设置msvs_version不起作用,您可以手动编辑npm配置文件。在终端中运行 npm config edit,这会在默认文本编辑器中打开配置文件。然后,将 msvs_version=2022 行添加到文件中并保存

© www.soinside.com 2019 - 2024. All rights reserved.