2015-12-04 22 views
0

今天我发现在节点0.10.40上成功编译的节点光纤和bcrypt的旧版本无法在节点5.1.0上成功编译。本地npm包是否有一种方法可以依赖于特定版本的V8 C++ API?

举例来说,如果我尝试编译bcrypt 0.7.8,我得到的错误,肯定是由于V8 API的变化:

> [email protected] 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.jsonnode-gyp配置中的任何字段。这是它的构建脚本中的一个错误,还是仅仅是包不能确定V8库版本?

+0

它看起来像'bcrypt'都有自己的'nan'依赖固定的版本,而不是使用插入符号,使新(向后兼容)版本会自动提取。您应该考虑在他们的GH问题跟踪器上提交问题和/或提交PR来添加插入符号。 – mscdex

回答

相关问题