Есть ли способ для собственных пакетов npm зависеть от конкретной версии API C++ V8?

Сегодня я обнаружил, что старые версии node-fiber и bcrypt, которые успешно компилируются на узле 0.10.40, не компилируются успешно на узле 5.1.0.

Например, если я пытаюсь скомпилировать bcrypt 0.7.8, я получаю ошибки, которые обязательно должны быть связаны с изменениями в API V8:

> 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 не удалось определить, что API V8 был несовместимой версией. Также я не вижу никаких полей в package.json или же node-gyp Конфиг, который может показаться применимым. Это ошибка в скрипте сборки, или для пакетов просто невозможно определить версию библиотеки V8?

1 ответ

https://docs.npmjs.com/files/package.json#engines

Вы можете указать версию узла, на котором работает ваш материал:

{
... 
  "engines" : { 
    "node" : ">=0.10.3 <0.12" 
  }
}
Другие вопросы по тегам