今天我发现在节点 0.10.40 上成功编译的旧版本的 node-fibers 和 bcrypt 在节点 5.1.0 上编译不成功。
例如,如果我尝试编译 bcrypt 0.7.8,我得到的错误肯定是由于 V8 API 的变化:
> bcrypt@0.7.8 install /Users/andy/jcore-portal/target/device/dist/bundle/node_modules/bcrypt
> node-gyp rebuild
CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o
CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o
CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt_node.o
../src/bcrypt_node.cc:54:18: error: no member named 'Dispose' in
'v8::Persistent<v8::Function, v8::NonCopyablePersistentTraits<v8::Function>
>'
callback.Dispose();
~~~~~~~~ ^
../src/bcrypt_node.cc:128:19: error: unknown type name 'uv_work_t'
void GenSaltAsync(uv_work_t* req) {
...
显然bcrypt
无法确定 V8 API 是不兼容的版本。我也没有看到任何似乎适用的字段package.json
或配置。node-gyp
这是它的构建脚本中的一个错误,还是仅仅因为包无法确定 V8 库版本?