我最初将此错误视为不同软件包的依赖项,但是当我自己尝试它时它也会失败。因为这是我第一次尝试安装node.js软件包,我确定我错过了什么,但是什么?
$ npm install --save sse4_crc32 \ > sse4_crc32@3.3.0 install /home/agam/node_modules/sse4_crc32 > node-gyp rebuild make: Entering directory '/home/agam/node_modules/sse4_crc32/build' CXX(target) Release/obj.target/sse4_crc32/src/sse4_crc32.o In file included from ../src/sse4_crc32.cpp:18:0: ../node_modules/nan/nan.h: In constructor ‘Nan::Utf8String::Utf8String(v8::Local)’: ../node_modules/nan/nan.h:1178:27: error: ‘REPLACE_INVALID_UTF8’ is not a member of ‘v8::String’ v8::String::REPLACE_INVALID_UTF8; ^ sse4_crc32.target.mk:87: recipe for target 'Release/obj.target/sse4_crc32/src/sse4_crc32.o' failed make: *** [Release/obj.target/sse4_crc32/src/sse4_crc32.o] Error 1 make: Leaving directory '/home/agam/node_modules/sse4_crc32/build'
答案 0 :(得分:3)
我的猜测是你正在使用节点v0.11.12或早期的v0.11版本,它不会有v8::String::REPLACE_INVALID_UTF8
(从v1.11.13开始,当v8从3.22.x升级到3.24.x时可用)。 node v0.11.x版本被认为是不稳定的,您应该升级到至少v0.12。在那之后,错误应该消失。
错误的更多技术原因是nan
围绕使用v8::String::REPLACE_INVALID_UTF8
的代码执行a check if the node ABI version is post-v0.10,因此它假定您使用的是v0.12或更新版本,其中常数可用。
答案 1 :(得分:3)
今天遇到同样的问题。
我在节点0.10.29上,应该可以工作。 升级到节点0.10.38,但没有解决问题。
我在debian(jessy)上运行并安装了npm,并将旧版本的node-gyp作为依赖项。 0.2.0我相信npm 1.4.x。
通过npm install -g安装新版本的node-gyp解决了这个问题。 (在一些符号链接更改为指向新节点-gyp之后)。