NPM错误安装“sse4_crc32”

我最初得到这个错误作为一个不同的软件包的依赖,但它也失败了,当我自己尝试它。 由于这是我第一次尝试安装node.js包,我确定我错过了一些东西,但是什么?

 $ npm install --save sse4_crc32
 \
 > sse4_crc32@3.3.0 install / home / agam / node_modules / sse4_crc32
 > node-gyp重build

 make:进入目录'/ home / agam / node_modules / sse4_crc32 / build'
   CXX(目标)Release / obj.target / sse4_crc32 / src / sse4_crc32.o
从../src/sse4_crc32.cpp:18:0包含的文件中:
 ../node_modules/nan/nan.h:在构造函数Nan :: Utf8String :: Utf8String(v8 :: Local)中:
 ../node_modules/nan/nan.h:1178:27:错误:'REPLACE_INVALID_UTF8'不是'v8 :: String'的成员
                            V8 ::string:: REPLACE_INVALID_UTF8;
                            ^
 sse4_crc32.target.mk:87:目标'Release / obj.target / sse4_crc32 / src / sse4_crc32.o'的配方失败
 make:*** [Release / obj.target / sse4_crc32 / src / sse4_crc32.o]错误1
 make:离开目录'/ home / agam / node_modules / sse4_crc32 / build'

今天跑到同样的问题。

我在节点0.10.29应该工作。 升级到节点0.10.38,但没有解决问题。

我在debian(jessy)上运行,在那里安装了npm作为一个依赖关系,将老版本的node-gyp拉进来。 0.2.0我相信npm 1.4.x.

通过npm install -g安装新版本的node-gyp解决了这个问题。 (一些符号链接改变后,指向新的节点gyp)。

我的猜测是你正在使用节点v0.11.12或更早版本的v0.11版本,它不会有v8::String::REPLACE_INVALID_UTF8 (当v8从3.22.x版本升级到3.24.x时,v0.11.13版本可用) 。 节点v0.11.x版本被认为是不稳定的,你应该升级到至lessv0.12。 之后,错误应该消失。

错误的更多技术原因是, nan只是简单地检查节点ABI版本是否在v8::String::REPLACE_INVALID_UTF8的代码周围,因此假定您使用的是v0.12或更新版本,这个常数是可用的。