Я поддерживаю пакет aerospike
, клиентский SDK для базы данных Aerospike No-SQL.На версиях Node.js вплоть до версии 11.15.0 включительно этот пакет компилируется и работает нормально.Но, начиная с версии 12.0.0, я получаю ошибку времени компиляции при сборке нативной надстройки, которую я не могу устранить.
Ошибка возникает в этой функции (слегка сокращенно):
void Aerospike(Handle<Object> exports, Handle<Object> module)
{
AerospikeClient::Init();
export("client", Nan::New<FunctionTemplate>(client)->GetFunction());
// more exports
}
NODE_MODULE(aerospike, Aerospike)
И ошибка, которую я получаю:
CXX(target) Release/obj.target/aerospike/src/main/aerospike.o
../src/main/aerospike.cc:102:6: error: variable has incomplete type 'void'
void Aerospike(Handle<Object> exports, Handle<Object> module)
^
../src/main/aerospike.cc:102:23: error: 'Object' does not refer to a value
void Aerospike(Handle<Object> exports, Handle<Object> module)
^
/Users/jhecking/.node-gyp/12.0.0/include/node/v8.h:3356:17: note: declared here
class V8_EXPORT Object : public Value {
^
../src/main/aerospike.cc:102:16: error: use of undeclared identifier 'Handle'
void Aerospike(Handle<Object> exports, Handle<Object> module)
^
../src/main/aerospike.cc:102:31: error: use of undeclared identifier 'exports'
void Aerospike(Handle<Object> exports, Handle<Object> module)
^
../src/main/aerospike.cc:102:47: error: 'Object' does not refer to a value
void Aerospike(Handle<Object> exports, Handle<Object> module)
^
/Users/jhecking/.node-gyp/12.0.0/include/node/v8.h:3356:17: note: declared here
class V8_EXPORT Object : public Value {
^
../src/main/aerospike.cc:102:40: error: use of undeclared identifier 'Handle'
void Aerospike(Handle<Object> exports, Handle<Object> module)
^
../src/main/aerospike.cc:102:55: error: use of undeclared identifier 'module'
void Aerospike(Handle<Object> exports, Handle<Object> module)
^
../src/main/aerospike.cc:102:62: error: expected ';' after top level declarator
void Aerospike(Handle<Object> exports, Handle<Object> module)
^
;
8 errors generated.
Модуль использует более старый API расширения C ++, а не n-api.Я использую последнюю версию nan v2.13.2.
Ошибка также видна в этом задании Travis CI: https://travis -ci.org / aerospike / aerospike-client-nodejs / jobs/523788617.
Полный исходный код находится здесь: https://github.com/aerospike/aerospike-client-nodejs/blob/2b9554d1158abda58c17cfbd0438d78f0212ef9e/src/main/aerospike.cc#L102