ошибка сборки node-gyb в привет, мир

Я пытался скомпилировать аддон node hello world и когда я вызываю node-gyp configure build, он генерирует несколько ошибок.

../binding.cc:6:19: error: unknown type name 'FunctionCallbackInfo'
    void Method(const FunctionCallbackInfo<Value>& args) {
                      ^
../binding.cc:6:39: error: expected ')'
    void Method(const FunctionCallbackInfo<Value>& args) {
                                          ^
../binding.cc:6:12: note: to match this '('
    void Method(const FunctionCallbackInfo<Value>& args) {
               ^
../binding.cc:8:15: error: no matching constructor for initialization of 'v8::HandleScope'
      HandleScope scope(isolate);
                  ^     ~~~~~~~
/***/***/.node-gyp/0.10.36/deps/v8/include/v8.h:473:3: note: candidate constructor not viable: no known conversion from 'v8::Isolate *' to 'const v8::HandleScope' for 1st
          argument
      HandleScope(const HandleScope&);
      ^
/****/***/.node-gyp/0.10.36/deps/v8/include/v8.h:448:3: note: candidate constructor not viable: requires 0 arguments, but 1 was provided
      HandleScope();
      ^
../binding.cc:9:3: error: use of undeclared identifier 'args'
      args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
      ^
../binding.cc:9:37: error: no member named 'NewFromUtf8' in 'v8::String'
      args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));

В чем может быть проблема?


person borgespires    schedule 09.04.2015    source источник


Ответы (1)


Проблема в том, что в примере предполагается, что вы используете Node 0.12, но вы используете Node 0.10 (судя по всему, 0.10.36). В Node 0.12 произошли большие (обратно несовместимые) изменения в структуре надстроек.

Вот версия, совместимая с 0.10: https://github.com/joyent/node/blob/aa35564ca1c9f3854bc5f7983f2f00cb51f67ffe/test/addons/hello-world/binding.cc

Отличный пакет, который позаботится о многих различиях между версиями Node, — это nan.

person robertklep    schedule 09.04.2015
comment
Это проблема. Спасибо. - person borgespires; 09.04.2015
comment
он совместим с узлом 4.2.2? - person Carlos.V; 15.07.2016
comment
@Carlos.V нет, но попробуйте это. - person robertklep; 15.07.2016
comment
Я работаю с Meteor 1.3.5 (у которого запущен узел 0.10.46), и у меня такая же проблема с пакетом s2geometry-node в зависимости. У меня есть решение или мне нужно воссоздать другой пакет с другой зависимостью? - person Arthur; 26.07.2016
comment
@Arthur Артур, у меня нет опыта работы с Meteor, но не могли бы вы обновить версию Node, которую он использует? Если нет, то вы можете попытаться найти последнюю версию s2geometry-node, которая все еще работает на узле 0.10. - person robertklep; 26.07.2016
comment
@robertklep Нет, вы не можете обновить NodeJS на Meteor, но я нашел node-s2, которые работают с Node 0.10. И Meteor 1.4 с Node 4 выпущен сегодня, так что теперь все работает нормально. - person Arthur; 27.07.2016