npm安装aspose.cells失败求助:XLSX转SVG工具安装遇编译错误
解决Node.js v17下安装aspose.cells失败的问题
错误原因
你遇到的编译错误error: no member named 'GetContents' in 'v8::ArrayBuffer',本质是Node.js v17升级了V8引擎API,而aspose.cells依赖的java模块(node-java)所使用的nan版本未适配该API变化,导致node-gyp编译失败。
解决方案
1. 降级Node.js到兼容版本
Node.js v16及以下版本对旧版nan的兼容性更稳定,推荐用nvm管理版本:
- 安装nvm后,执行:
nvm install 16.18.1 nvm use 16.18.1 - 删除本地
node_modules和package-lock.json,重新执行:npm install aspose.cells
2. 强制更新依赖的nan版本
若不想降级Node.js,可尝试强制升级java模块依赖的nan版本到适配V8新API的版本:
- 在项目
package.json中添加resolutions字段(需npm >=6或使用yarn):"resolutions": { "aspose.cells/java/nan": "^2.17.0" } - 删除
node_modules和package-lock.json,重新安装依赖:rm -rf node_modules package-lock.json npm install
注意:此方法可能存在潜在兼容性问题,安装完成后需测试XLSX转SVG功能是否正常运行。
3. 尝试纯JavaScript版依赖
检查aspose.cells是否提供无需Java依赖的纯JavaScript版本,彻底规避node-gyp编译相关问题。
原始错误日志
$ npm install aspose.cells code 1 npm ERR! path /Volumes/NEW_DISK/user/sudheer.hr/nodejs/xlsx/node_modules/aspose.cells/node_modules/java npm ERR! command failed npm ERR! command sh -c -- node-gyp rebuild npm ERR! CXX(target) Release/obj.target/nodejavabridge_bindings/src/java.o npm ERR! gyp info it worked if it ends with ok npm ERR! gyp info using node-gyp@9.1.0 npm ERR! gyp info using node@17.9.1 | darwin | arm64 npm ERR! gyp info find Python using Python version 3.7.2 found at "/usr/local/bin/python3" npm ERR! gyp info spawn /usr/local/bin/python3 npm ERR! gyp info spawn args [ npm ERR! gyp info spawn args '/opt/local/lib/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 'make', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args '/Volumes/NEW_DISK/user/sudheer.hr/nodejs/xlsx/node_modules/aspose.cells/node_modules/java/build/config.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args '/opt/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi', npm ERR! gyp info spawn args '-I', npm ERR! gyp info spawn args '/Users/sudheer.hr/Library/Caches/node-gyp/17.9.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=/Users/sudheer.hr/Library/Caches/node-gyp/17.9.1', npm ERR! gyp info spawn args '-Dnode_gyp_dir=/opt/local/lib/node_modules/npm/node_modules/node-gyp', npm ERR! gyp info spawn args '-Dnode_lib_file=/Users/sudheer.hr/Library/Caches/node-gyp/17.9.1/<(target_arch)/node.lib', npm ERR! gyp info spawn args '-Dmodule_root_dir=/Volumes/NEW_DISK/user/sudheer.hr/nodejs/xlsx/node_modules/aspose.cells/node_modules/java', 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 'build', npm ERR! gyp info spawn args '-Goutput_dir=.' npm ERR! gyp info spawn args ] npm ERR! gyp info spawn make npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ] npm ERR! In file included from ../src/java.cpp:1: npm ERR! In file included from ../src/java.h:9: npm ERR! In file included from ../../nan/nan.h:2884: npm ERR! ../../nan/nan_typedarray_contents.h:34:43: error: no member named 'GetContents' in 'v8::ArrayBuffer' npm ERR! data = static_cast<char*>(buffer->GetContents().Data()) + byte_offset; npm ERR! ~~~~~~~~^ npm ERR! 1 error generated. npm ERR! make: *** [Release/obj.target/nodejavabridge_bindings/src/java.o] Error 1 npm ERR! gyp ERR! build error npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2 npm ERR! gyp ERR! stack at ChildProcess.onExit (/opt/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:201:23) npm ERR! gyp ERR! stack at ChildProcess.emit (node:events:527:28) npm ERR! gyp ERR! stack at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12) npm ERR! gyp ERR! System Darwin 22.1.0 npm ERR! gyp ERR! command "/opt/local/bin/node" "/opt/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" npm ERR! gyp ERR! cwd /Volumes/NEW_DISK/user/sudheer.hr/nodejs/xlsx/node_modules/aspose.cells/node_modules/java npm ERR! gyp ERR! node -v v17.9.1 npm ERR! gyp ERR! node-gyp -v v9.1.0 npm ERR! gyp ERR! not ok npm ERR! A complete log of this run can be found in: npm ERR! /Users/sudheer.hr/.npm/_logs/2022-12-01T08_39_36_852Z-debug-0.log
内容的提问来源于stack exchange,提问作者Sudheer Hebbale
相关产品推荐
相关产品推荐

