1

我正在尝试从 https://github.com/nodejs/node-addon-examples/tree/master/1_hello_world/node-addon-api运行 Node C++ 插件示例

使用命令:

npm install
node ./

我正在使用带有 node.js v12.18.3 node-gyp v7.1.0 的 Windows 10

具有以下变量用户变量:

Path:
...
C:\Users\User\.windows-build-tools\python27\

系统变量:

VCINSTALLDIR
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC

VS150COMNTOOLS (is this name correct, is this variable is relevant?)
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools

msvs_version
2017

npm 配置详情(npm config list --json):

"msvs_version": "2017"
"msbuild_path": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\MSBuild\\15.0\\Bin\\MSBuild.exe"
"node_gyp": "C:\\Users\\User\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js",
"python": "C:\\Users\\User\\.windows-build-tools\\python27\\python.exe",

我已经安装了 Visual Studio 2017 以及此处提到的所有相关 C++ 构建工具: 如何解决错误 gypgyp ERR!ERR!发现 VSfind VS msvs_version 未从命令行或 npm 配置设置?

但仍然收到此错误:

gyp ERR! find VS msvs_version was set from command line or npm config
gyp ERR! find VS - looking for Visual Studio version 2017
gyp ERR! find VS running in VS Command Prompt, installation path is:
gyp ERR! find VS "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional"
gyp ERR! find VS - will only use this version
gyp ERR! find VS could not use PowerShell to find Visual Studio 2017 or newer
gyp ERR! find VS looking for Visual Studio 2015
gyp ERR! find VS - found in "C:\Program Files (x86)\Microsoft Visual Studio 14.0"
gyp ERR! find VS - MSBuild in "C:\Program Files (x86)\MSBuild\14.0\bin\MSBuild.exe"
gyp ERR! find VS - msvs_version does not match this version
gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8
gyp ERR! find VS msvs_version does not match this VS Command Prompt or the
gyp ERR! find VS installation cannot be used.
gyp ERR! find VS
gyp ERR! find VS **************************************************************
gyp ERR! find VS You need to install the latest version of Visual Studio
gyp ERR! find VS including the "Desktop development with C++" workload.
gyp ERR! find VS For more information consult the documentation at:
gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows
gyp ERR! find VS **************************************************************
gyp ERR! find VS
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Visual Studio installation to use
gyp ERR! stack     at VisualStudioFinder.fail (C:\Users\User\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:121:47)
gyp ERR! stack     at C:\Users\User\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:74:16
gyp ERR! stack     at VisualStudioFinder.findVisualStudio2013 (C:\Users\User\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:351:14)
gyp ERR! stack     at C:\Users\User\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:70:14
gyp ERR! stack     at C:\Users\User\AppData\Roaming\npm\node_modules\node-gyp\lib\find-visualstudio.js:391:20
gyp ERR! stack     at C:\Users\User\AppData\Roaming\npm\node_modules\node-gyp\lib\util.js:54:7
gyp ERR! stack     at C:\Users\User\AppData\Roaming\npm\node_modules\node-gyp\lib\util.js:42:7
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:294:7)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at maybeClose (internal/child_process.js:1021:16)
gyp ERR! System Windows_NT 10.0.18363
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\User\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Projects\VS\Electron\node-addon-examples-master\1_hello_world\node-addon-api
gyp ERR! node -v v12.18.3
gyp ERR! node-gyp -v v7.1.0
gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! hello_world@0.0.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the hello_world@0.0.0 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

当我尝试更改上述所有参数以使用安装了所有 VS2015 构建工具的 VS2015 时,它可以正常工作。

如何修复上述错误以使用 Visual Studio 2017 或 2019?

4

2 回答 2

2

尝试在您正在触发构建的命令窗口中设置此环境,它将 VS2017 映射到 15。

SET VS140COMNTOOLS=%VS150COMNTOOLS%
于 2020-08-27T21:11:28.913 回答
1

从日志中,我想相信您遇到了 node-gyp 和 VS Build Tools 之间的版本冲突。

你的 node.js v12.18.3 和 node-gyp v7.1.0 看起来不错。

我还从实践中观察到 node-gyp v7.1.0 与 VS2019 构建工具配合得最好。

只需确保您的 node-gyp 已在全球范围内安装

$ npm install -g node-gyp

并且您还安装了 Python,至少安装了 v2.7、v3.5、v3.6、v3.7 或 v3.8 之一。

如果您安装了多个 Python 版本,则可以通过使用以下命令设置 npm 配置来确定 node-gyp 应该使用哪个 Python 版本:

$ npm config set python /path/to/executable/python

如果您还没有安装 VS2019 构建工具,我还建议您直接访问Microsoft 的下载页面以下载并安装 VS2019 构建工具,这是最近更新的。

假设您已经安装了 VS2019 构建工具和其他版本的构建工具,即 VS2017、VS2015。我建议打开 Visual Studio 卸载程序,我建议卸载除 VS2019 构建工具之外的所有其他版本的 VS 构建工具,它应该与全球安装的 node-gyp 包的最新版本兼容。

更新您的 VS2019 构建工具,目前已推出新的更新。

还要确保在您的 bindings.gyp 配置文件中将“<!@(node -p "require('node-addon-api').include")”添加到您的“include_dirs”中。

{
...,
 "include_dirs": [
    "<!@(node -p \"require('node-addon-api').include\")"
 ],
...
}

我希望这至少有帮助!

于 2020-09-12T15:29:55.190 回答