安装GLTF转3D Tiles工具时遇npm gyp及sqlite3错误求助
GLTF转3D Tiles工具安装失败:sqlite3与node-gyp相关错误
尝试安装GLTF转3D Tiles的npm工具,使用Node.js v16.17.1,即使以管理员身份运行VS Code执行命令,仍遭遇sqlite3和node-gyp相关错误。尝试执行npm install --global --production windows-build-tools时安装卡住,无法完成。具体报错日志如下:
npm ERR! code 1 npm ERR! path D:\3dtile\3d-tiles-validator-main\tools\node_modules\sqlite3 npm ERR! command failed npm ERR! command C:\WINDOWS\system32\cmd.exe /d /s /c C:\Users\userA\AppData\Local\Temp\install-6df9eb3f.cmd npm ERR! 指定的路径无效。要处理路径,请添加"/m"开关。 npm ERR! unpack_sqlite_dep npm ERR! 无法找到指定的路径。 npm ERR! C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(209,5): error MSB6006: "cmd.exe"已退出,代码为1。 [D:\3dtile\3d-tiles-validator-main\tools\node_modules\sqlite3\build\deps\action_before_build.vcxproj] npm ERR! Failed to execute 'C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js build --fallback-to-build --module=D:\3dtile\3d-tiles-validator-main\tools\node_modules\sqlite3\lib\binding\node-v93-win32-x64\node_sqlite3.node --module_name=node_sqlite3 --module_path=D:\3dtile\3d-tiles-validator-main\tools\node_modules\sqlite3\lib\binding\node-v93-win32-x64 --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v93' (1) npm ERR! node-pre-gyp info it worked if it ends with ok npm ERR! node-pre-gyp info using node-pre-gyp@0.11.0 npm ERR! node-pre-gyp info using node@16.17.1 | win32 | x64 npm ERR! node-pre-gyp WARN Using request for node-pre-gyp https download npm ERR! node-pre-gyp info check checked for "D:\3dtile\3d-tiles-validator-main\tools\node_modules\sqlite3\lib\binding\node-v93-win32-x64\node_sqlite3.node" (not found) npm ERR! node-pre-gyp http GET https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.2.0/node-v93-win32-x64.tar.gz npm ERR! node-pre-gyp http 403 https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.2.0/node-v93-win32-x64.tar.gz npm ERR! node-pre-gyp WARN Tried to download(403): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.2.0/node-v93-win32-x64.tar.gz npm ERR! node-pre-gyp WARN Pre-built binaries not found for sqlite3@4.2.0 and node@16.17.1 (node-v93 ABI, unknown) (falling back to source compile with node-gyp) npm ERR! node-pre-gyp http 403 status code downloading tarball https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.2.0/node-v93-win32-x64.tar.gz npm ERR! gyp info it worked if it ends with ok npm ERR! gyp info using node-gyp@9.0.0 npm ERR! gyp info using node@16.17.1 | win32 | x64 npm ERR! gyp info ok npm ERR! gyp info it worked if it ends with ok npm ERR! gyp info using node-gyp@9.0.0 npm ERR! gyp info using node@16.17.1 | win32 | x64 npm ERR! gyp info find Python using Python version 3.10.2 found at "C:\Users\userA\AppData\Local\Programs\Python\Python310\python.exe" npm ERR! gyp info find VS using VS2017 (15.9.28307.2094) found at: npm ERR! gyp info find VS "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools" npm ERR! gyp info find VS run with --verbose for detailed information npm ERR! gyp info spawn C:\Users\userA\AppData\Local\Programs\Python\Python310\python.exe npm ERR! gyp info spawn args [ npm ERR! gyp info spawn args 'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py', npm ERR! gyp info spawn args 'binding.gyp', npm ERR! gyp info spawn args '-f', npm ERR! gyp info spawn args 'msvs', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args 'D:\\3dtile\\3d-tiles-validator-main\\tools\\node_modules\\sqlite3\\build\\config.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args 'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\addon.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args 'C:\\Users\\userA\\AppData\\Local\\node-gyp\\Cache\\16.17.1\\include\\node\\common.gypi', npm ERR! gyp info spawn args '-Dlibrary=shared_library', npm ERR! gyp info spawn args '-Dvisibility=default', npm ERR! gyp info spawn args '-Dnode_root_dir=C:\\Users\\userA\\AppData\\Local\\node-gyp\\Cache\\16.17.1', npm ERR! gyp info spawn args '-Dnode_gyp_dir=C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp', npm ERR! gyp info spawn args '-Dnode_lib_file=C:\\\\Users\\\\\\userA\\\\\\AppData\\\\\\Local\\\\\\node-gyp\\\\\\Cache\\\\\\16.17.1\\\\\\<(target_arch)\\\\\\node.lib', npm ERR! gyp info spawn args '-Dmodule_root_dir=D:\\3dtile\\3d-tiles-validator-main\\tools\\node_modules\\sqlite3', npm ERR! gyp info spawn args '-Dnode_engine=v8', npm ERR! gyp info spawn args '--depth=.', npm ERR! gyp info spawn args '--no-parallel', npm ERR! gyp info spawn args '--generator-output', npm ERR! gyp info spawn args 'D:\\3dtile\\3d-tiles-validator-main\\tools\\node_modules\\sqlite3\\build', npm ERR! gyp info spawn args '-Goutput_dir=.' npm ERR! gyp info spawn args ] npm ERR! gyp info ok npm ERR! gyp info it worked if it ends with ok npm ERR! gyp info using node-gyp@9.0.0 npm ERR! gyp info using node@16.17.1 | win32 | x64 npm ERR! gyp info spawn C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe npm ERR! gyp info spawn args [ npm ERR! gyp info spawn args 'build/binding.sln', npm ERR! gyp info spawn args '/clp:Verbosity=minimal', npm ERR! gyp info spawn args '/nologo', npm ERR! gyp info spawn args '/p:Configuration=Release;Platform=x64' npm ERR! gyp info spawn args ] npm ERR! gyp ERR! build error npm ERR! gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe` failed with exit code: 1 npm ERR! gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:194:23) npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:513:28) npm ERR! gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12) npm ERR! gyp ERR! System Windows_NT 10.0.19043 npm ERR! gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "build" "--fallback-to-build" "--module=D:\\3dtile\\3d-tiles-validator-main\\tools\\node_modules\\sqlite3\\lib\\binding\\node-v93-win32-x64\\node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=D:\\3dtile\\3d-tiles-validator-main\\tools\\node_modules\\sqlite3\\lib\\binding\\node-v93-win32-x64" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v93" npm ERR! gyp ERR! cwd D:\3dtile\3d-tiles-validator-main\tools\node_modules\sqlite3 npm ERR! gyp ERR! node -v v16.17.1 npm ERR! gyp ERR! node-gyp -v v9.0.0 npm ERR! gyp ERR! not ok npm ERR! node-pre-gyp ERR! build error npm ERR! node-pre-gyp ERR! stack Error: Failed to execute 'C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js build --fallback-to-build --module=D:\3dtile\3d-tiles-validator-main\tools\node_modules\sqlite3\lib\binding\node-v93-win32-x64\node_sqlite3.node --module_name=node_sqlite3 --module_path=D:\3dtile\3d-tiles-validator-main\tools\node_modules\sqlite3\lib\binding\node-v93-win32-x64 --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v93' (1) npm ERR! node-pre-gyp ERR! stack at ChildProcess.<anonymous> (D:\3dtile\3d-tiles-validator-main\tools\node_modules\node-pre-gyp\lib\util\compile.js:83:29) npm ERR! node-pre-gyp ERR! stack at ChildProcess.emit (node:events:513:28) npm ERR! node-pre-gyp ERR! stack at maybeClose (node:internal/child_process:1093:16) npm ERR! node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5) npm ERR! node-pre-gyp ERR! System Windows_NT 10.0.19043 npm ERR! node-pre-gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "D:\\3dtile\\3d-tiles-validator-main\\tools\\node_modules\\node-pre-gyp\\bin\\node-pre-gyp" "install" "--fallback-to-build" npm ERR! node-pre-gyp ERR! cwd D:\3dtile\3d-tiles-validator-main\tools\node_modules\sqlite3 npm ERR! node-pre-gyp ERR! node -v v16.17.1 npm ERR! node-pre-gyp ERR! node-pre-gyp -v v0.11.0 npm ERR! node-pre-gyp ERR! not ok npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\userA\AppData\Local\npm-cache\_logs\2022-09-30T01_45_55_140Z-debug-0.log
错误原因分析
- 预编译包缺失:sqlite3@4.2.0是旧版本,未提供Node.js v16(ABI v93)对应的预编译二进制包,下载时返回403错误,触发源码编译流程。
- 编译环境不兼容:
- windows-build-tools安装不完整,导致路径处理出错(提示「指定的路径无效」)
- Python版本过高(3.10.2),node-gyp v9.0.0对Python版本要求为3.7-3.9,版本不匹配导致编译失败
- VS 2017 Build Tools可能缺少必要组件,导致MSBuild执行失败
解决方案
方案1:降级Node.js版本(推荐,最省心)
sqlite3@4.2.0官方支持的最高Node.js版本为v14(ABI v83),降级到Node.js 14.x LTS版本即可绕过编译问题:
- 使用nvm管理版本(若未安装nvm,先下载安装):
nvm install 14.21.3 nvm use 14.21.3 - 重新执行目标工具的安装命令
方案2:升级sqlite3版本(无需降级Node.js)
进入项目根目录,强制升级sqlite3到支持Node.js v16的版本(≥5.0.0):
npm install sqlite3@^5.0.0 --save
升级完成后,重新安装GLTF转3D Tiles工具
方案3:修复编译环境(适合坚持源码编译的场景)
- 卸载无效的windows-build-tools:
npm uninstall --global windows-build-tools - 手动安装编译工具:
- 下载安装Visual Studio 2019 Build Tools,勾选「C++构建工具」和对应版本的「Windows SDK」
- 安装Python 3.9.x版本,添加到系统环境变量
PATH
- 配置node-gyp使用正确的Python版本:
npm config set python C:\Python39\python.exe - 重新执行安装命令
方案4:配置镜像加速(解决预编译包下载问题)
设置node-pre-gyp国内镜像,避免国外资源访问受限:
npm config set node-pre-gyp https://npmmirror.com/mirrors/node-pre-gyp/
内容的提问来源于stack exchange,提问作者Y_Y
相关产品推荐
相关产品推荐

