无法为节点构建本机包

Unable to build native packages for node

所以我 运行 正在开发一个 Electron 应用程序,它有一些本地模块,其中一个是名为 better-sqlite3 的包。我 运行 yarn 和 yarn 能够毫无问题地安装所有包,但是当它到达构建步骤时,一切都崩溃了。

我得到了一堆不同的 node-gyp 错误输出,其中 2 个我已经能够保存,所以我可以在这里显示第一个错误的错误输出的重要部分:

C:\Program Files (x86)\Microsoft Visual Studio17\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Platform.targets(67,5): error MSB8020: The build tools for v140 (Platform Toolset = 'v140') cannot be found. To build using the v140 build tools, please install v140 build tools. Alternatively, you may upgrade to the current Visual Studio tools by selecting the Project menu or right-click the solution, and then selecting "Retarget solution". [C:\Users\bepop\Documents\DeveloperData\Clippy\app\node_modules\better-sqlite3\build\deps\action_before_build.vcxproj]

Full error

关于这个错误,我尝试了很多事情,比如以多种不同的方式安装微软可视化构建工具,比如手动访问他们的网站并下载 IDE,我也尝试过安装通过 NPM 构建工具:

npm install --global --production windows-build-tools

它总是能成功安装构建工具,但仍然出现错误,我还尝试使用以下命令编辑 npm 配置:npm config set msvs_version 2017 仍然不起作用。我也尝试过安装 Visual Studio 并手动检查:"VC++ 2017 version 15.7 v14.14 latest v141 tools" 也没什么。

我确实记得在某些时候我能够使用 Windows 10 正常构建所有内容,我从来没有遇到过问题,但现在不会了。几个月来我一直在尝试自己解决这个问题,我一直坚持在我的 macbook 上做这个项目,在这个项目上构建 better-sqlite3 包从来没有问题。

我尝试过的另外 1 件事是完全擦除计算机上的所有内容并重新开始,因为在某些时候我更改了太多东西,以至于我忘记了我安装了什么和没有安装什么。

如果我从 package.json 文件中删除 better-sqlite3 包,一切 运行 都会顺利进行,我可以 运行 我的项目正常运行,但我需要 better-sqlite3包。我可以使用另一个包,但我真的不应该那样做,我想深入了解为什么我不会构建它。

编辑:

更新:我将 Microsoft 构建工具 v14.0.23107.0 添加到我的 pats 变量中,现在它输出错误:

C:\Users\bepop\Documents\DeveloperData\Clippy\node_modules\integer\build\integer.vcxproj(21,3): error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

首先删除系统中安装的所有 visual studio 版本,同时删除 pathsystem variable 中的条目。

并按照以下 URL https://github.com/nodejs/node-gyp#readme

package.json 中删除 better-sqlite3 这个包条目后,一切 运行 都很好,因为其他包没有任何本机依赖项。这个 better-sqlite3 是下载后的原生模块,这个模块使用工具 node-gpy 构建,需要在你的系统上安装两个东西,即 pythonvisual studio .

所以请尝试按照上述 URL 步骤进行操作。

一定有用。

我自己解决了这个问题:

  1. 删除节点模块文件夹

  1. 按顺序运行以管理员权限打开PowerShell

    npm install --global --production --vs2015 --add-python-to-path windows-build-tools

    npm install --global --production --add-python-to-path windows-build-tools node-gyp

  1. 转到 ~/.npmrc 并确保这些是您的设置:

    msvs_version=2015

    python=python2.7