我遇到的问题是我无法安装项目的软件包,它一直出错:
npm ERR! npm ERR! gyp ERR! find VS valid versions for msvs_version:
npm ERR! npm ERR! gyp ERR! find VS
npm ERR! npm ERR! gyp ERR! find VS **************************************************************
npm ERR! npm ERR! gyp ERR! find VS You need to install the latest version of Visual Studio
npm ERR! npm ERR! gyp ERR! find VS including the "Desktop development with C++" workload.
npm ERR! npm ERR! gyp ERR! find VS For more information consult the documentation at:
npm ERR! npm ERR! gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows
npm ERR! npm ERR! gyp ERR! find VS **************************************************************
我尝试遵循其他人的这些帖子的建议:
如何修复 Node.js 错误,例如“gyp ERR!找到 VS,包括“使用 C++ 进行桌面开发”工作负载。”当我启动 Nuxt.js 项目时
还有这个如何解决错误 gypgyp ERR!ERR!发现 VSfind VS msvs_version 未从命令行或 npm config 设置?
但似乎都没有帮助。
到目前为止我所做的:
我使用
Desktop development with C++
以及 MSVC v143 - VS 2022 C++ x64/x86 build tools
安装了最新的 VS Code(2022 社区)
我已将
msvs_version
配置为具有 2022
的值,我使用 npm config set msvs_version=2022
和 node-gyp configure --msvs_version=2022
进行了配置
我尝试安装Windows构建工具
npm install --global --production windows-build-tools
但它只是说...Node.js now incldues build tools for Windows...
我还使用上面列出的第二篇文章中的命令手动构建了node-gyp
node-gyp configure
node-gyp configure --msvs_version=2022
node-gyp build
及其所有绿色和oks
我不知道我还能做什么
经过几个小时的搜索,我发现了问题,这是我的节点版本,我当时是 16.x.x,我安装了节点版本管理器并移至版本 14,它工作了。
在 Windows 11、VSCode、Visual Studio 2022 中解决了 node-gyp
node -v
v18.4.0
nvm version
1.1.9
node-gyp -v
v9.0.0
node-gyp configure --msvs_version=2022
启动 Visual Studio 安装程序
在 Visual Studio Community 2022 旁边 -> 修改 -> 单独组件 键入 Visual C++
确保选中 MSVC v143 ... x64/x86 构建工具(最新)。
检查当前 Windows 版本
返回 Visual Studio 安装,输入 SDK,然后找到正确的 SDK 版本。 对我来说,Windows 11 SDK (10.0.22000.0)
完成所有这些设置后.. 我还是明白了
gyp ERR! find VS - does not match this Visual Studio Command Prompt
知道我必须破解代码
在错误日志上方添加这 3 行
+this.addLog("this.envVcInstallDir: " + this.envVcInstallDir)
+this.addLog("vsPath: " + vsPath)
+this.addLog("path.relative(this.envVcInstallDir, vsPath): " + path.relative(this.envVcInstallDir, vsPath))
if (this.envVcInstallDir &&
path.relative(this.envVcInstallDir, vsPath) !== '') {
this.addLog('- does not match this Visual Studio Command Prompt')
return false
}
并追踪
if (process.env.VCINSTALLDIR) {
this.envVcInstallDir =
path.resolve(process.env.VCINSTALLDIR, '..')
this.addLog('running in VS Command Prompt, installation path is:\n' +
`"${this.envVcInstallDir}"\n- will only use this version`)
} else {
this.addLog('VCINSTALLDIR not set, not running in VS Command Prompt')
}
最后,必须在 VCINSTALLDIR 末尾添加一些内容
问题已解决,将卸载 VS 2017 & 2019 以节省空间。
不确定我采取的哪一个(或组合)步骤解决了问题,但它们是:
node.js
版本(截至撰写本文时为 v18.12.1
)并通过安装程序运行 chocolatey
(“安装其他软件包”复选框),将 python
更新为 3.11
。2017
。npm config set msvs_version=2017
。nodejs
修复选项。就是这样!
就上下文而言,我正在更新
Angular
项目 14 -> 15,并开始遇到这些问题。
在此过程中,我还安装了带有
Visual Studio 2022 Community
工作负载的 Development with c++
,但 node-gyp
仍然无法识别它。
还有我已经卸载的
Visual Studio Build Tools 2019
。
我运行的
2017
版本是 15.9.43
。
希望这对将来的人有帮助:)
如果没有任何效果,请检查您是否根据操作系统架构安装了正确版本的节点。我安装的是 Arm64 版本而不是 x64。