前言 在通過(guò) node-gyp 打包 C++ 集成的 node 插件時(shí),遇到了挺多坑點(diǎn),網(wǎng)上大部分資料都是針對(duì)低版本的 node-gyp 進(jìn)行處理,時(shí)效性較差,因此通過(guò)書寫文章的形式整理自己踩過(guò)的坑點(diǎn)。 node-gyp 是什么? node-gyp 是一個(gè)可以編譯 node 插件的工具,在使用 node-gyp 前需要安裝 python 環(huán)境和 C++ 環(huán)境 如何安裝 1 安裝 windows-build-tools 查閱了網(wǎng)上大部分文章,windows-build-tools 這個(gè) npm 包可以幫助我們一鍵安裝 node-gyp 所需要的 python 環(huán)境和 C++ 環(huán)境。 但 windows-build-tools npm 包已經(jīng)不維護(hù)了。如需要繼續(xù)使用的話,我們可以將 python2.7 替換成 python3, 在安裝 C++ 環(huán)境 具體步驟如下: 1 采用管理員模式開(kāi)啟 CMD 或者 powerShell, 安裝 windows-build-tools npm install --global --production windows-build-tools 2 如果遇到了 successfully installed python 卡主 不要慌,疑似 window-build-tools 自帶的bug,可查看相關(guān)issue鏈接 解決方案: 1 打開(kāi)資源管理器(左下角搜索-資源管理器或者直接window+E),在路徑處輸入%temp% 2 在%temp%文件夾中找到最新的文件名類似于dd_installer_20211126145101.log的文件,查看此文件,確保日志中輸出了Closing the installer with exit code 0 3 在%temp%目錄下創(chuàng)建一個(gè)名為dd_client_.log的文件 4 編輯創(chuàng)建的文件,加入一行Closing installer. Return code: 3010.然后保存。 5 回到執(zhí)行安裝命令的窗口,會(huì)繼續(xù)安裝windows-build-tools的步驟 2 安裝 python3 網(wǎng)上部分文章說(shuō) node-gyp 應(yīng)該用 python 版本 2.7 版本,可能是因?yàn)闀r(shí)效性的問(wèn)題,目前 python2 已經(jīng)不在維護(hù)了,并且 node-gyp 在官方文檔上也說(shuō)明應(yīng)該用 python3。 1 在 C 盤 Users 目錄下的 .windows-build-tools, 找到python相關(guān)的 msi 文件, 打開(kāi)并卸載掉 python2, 因?yàn)?node-gyp@9 版本對(duì)應(yīng)是 python3 的版本 2 安裝 python3 環(huán)境并配置環(huán)境變量 傳送門 3 安裝 C++ 環(huán)境 點(diǎn)擊 vs_BuildTools.exe 安裝環(huán)境的方式有 2 種: 方案1: Install Visual C++ Build Environment Visual Studio Build Tools 方案2: 使用 visual studio community 安裝c++桌面開(kāi)發(fā)工具(我是用的這種方式) 4 安裝 node-gyp npm install -g node-gyp 常見(jiàn)問(wèn)題的解決 1 python not found - had to configure it manually in npm 如果小伙伴已經(jīng)安裝了 python, 查看版本是否是 python3 的版本并且設(shè)置了環(huán)境變量 2 如何打包 C++ 集成的插件npm config set msvs_version 2017node-gyp configure node-gyp build復(fù)制代碼 參考文檔 Windows下node-gyp查找VS安裝路徑簡(jiǎn)單解析 node-gyp官方文檔 windows-build-tools npm文檔 npm安裝windows-build-tools時(shí)卡在Successfully installed Python 2.7 安裝 C++ 環(huán)境 python not found - had to configure it manually in npm |
|
來(lái)自: LibraryPKU > 《Dev》