我正在运行一个 Electron 应用程序,它有一些本机模块,其中一个模块是一个名为
better-sqlite3
的包。我运行 Yarn,Yarn 能够毫无问题地安装所有软件包,但当进入构建步骤时,一切都会崩溃。
我得到了一堆不同的
node-gyp
错误输出,其中2个我已经能够保存,所以我可以在这里显示第一个错误的错误输出的重要部分:
C:\Program Files (x86)\Microsoft Visual Studio�7\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Platform.targets(67,5):错误 MSB8020:v140 的构建工具(平台工具集= 'v140') 找不到。要使用 v140 构建工具进行构建,请安装 v140 构建工具。 或者,您可以通过选择“项目”菜单或右键单击解决方案,然后选择“重新定位解决方案”来升级到当前的 Visual Studio 工具。 [C:\Users epop\Documents\DeveloperData\Clippy pp ode_modules etter-sqlite3 uild\deps ction_before_build.vcxproj]
就这个错误而言,我尝试了多种方法,例如以多种不同的方式安装 Microsoft 可视化构建工具,例如手动访问其网站并下载 IDE,我还尝试通过 NPM 安装构建工具:
npm install --global --production windows-build-tools
它总是成功安装构建工具,但仍然出错,我还尝试使用以下命令编辑 npm 配置:
npm config set msvs_version 2017
还是不行。我还尝试去安装 Visual Studio 并手动检查:“VC++ 2017 版本 15.7 v14.14 最新 v141 工具”。也没什么。
我确实记得在某个时候我能够使用 Windows 10 正常构建所有内容,并且从未遇到过问题,但现在不再出现问题了。几个月来我一直在尝试自己解决这个问题,而且我一直坚持在 MacBook 上处理这个项目,在构建
better-sqlite3
包时从来没有出现过问题。
我尝试过的另一件事是彻底清除计算机上的所有内容并重新开始,因为在某些时候我更改了很多东西,以至于我忘记了我安装了什么和没有安装什么。
如果我从
better-sqlite3
文件中删除 package.json
包,一切都会顺利运行,我可以正常运行我的项目,但我需要 better-sqlite3
包。我可以使用另一个包,但我真的不应该这样做,我想弄清楚为什么这没有构建。
我将 Microsoft 构建工具 v14.0.23107.0 添加到我的 pats 变量中,现在它输出错误:
C:\Users epop\Documents\DeveloperData\Clippy ode_modules\integer uild\integer.vcxproj(21,3):错误 MSB4019:找不到导入的项目“C:\Microsoft.Cpp.Default.props”。确认
声明中的路径正确,并且该文件存在于磁盘上。
为自己解决了问题:
以管理员权限打开PowerShell并按顺序运行
npm install --global --product --vs2015 --add-python-to-path windows-build-tools
npm install --global --product --add-python-to-path windows-build-tools node-gyp
转到
~/.npmrc
并确保这些是您的设置:
msvs_version=2015
python=python2.7
首先删除系统中安装的所有 Visual Studio 版本,并删除
path
和 system variable
中的条目。
并点击以下网址 https://github.com/nodejs/node-gyp#readme
从
better-sqlite3
中删除 package.json
此包条目后,一切运行正常,因为其他包没有任何本机依赖项。下载后,这个 better-sqlite3
是本机模块,该模块使用工具 node-gpy
构建,需要在您的系统上安装两个东西,即 python
和 visual studio
。
因此请尝试按照上述 URL 步骤操作。
一定会成功的。