微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Visual Studio 2017或2019编译Node-gyp C ++插件

如何解决使用Visual Studio 2017或2019编译Node-gyp C ++插件

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

使用命令:

npm install
node ./

我将Windows 10与 node.js v12.18.3 node-gyp v7.1.0

具有以下变量 用户变量:

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配置列表--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",

我已使用此处提到的所有相关C ++生成工具安装了Visual Studio 2017: How can I solve error gypgyp ERR!ERR! find VSfind VS msvs_version not set from command line or npm config?

但仍然收到此错误

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?

解决方法

尝试在要生成该版本的命令窗口中设置此环境,它将VS2017映射到15。

SET VS140COMNTOOLS=%VS150COMNTOOLS%
,

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

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

我还从实践中观察到,node-gyp v7.1.0与VS2019 Build Tools一起使用效果最佳。

只需确保您的node-gyp已全局安装

$ npm install -g node-gyp

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

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

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

如果您尚未安装VS2019构建工具,我也建议您直接访问Microsoft's Download Page,以下载并安装VS2019构建工具,该工具最近已更新。

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

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

还要确保在bindings.gyp配置文件的“ include_dirs”中添加“

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

我希望至少有帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。