Cannot build on the latest node release. Seems to be related to some methods that were deprecated in the v8 api that the newer node uses.
std::string audio_file = *v8::String::Utf8Value(info[0]->ToString());
which uses the ‘v8::Value::ToString()’ method which is deprecated and there is a newer method that takes a context argument? I took a quick look for a bit but am too unfamiliar with the v8 api. It also seem that the v8 api documentation is missing for node 11.x and 12.x so it is a bit tricky to track down the docs.
<command-line>: note: this is the location of the previous definition
../src/taglib2.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE writeTagsSync(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/taglib2.cc:82:69: error: no matching function for call to ‘v8::Value::ToString()’
std::string audio_file = *v8::String::Utf8Value(info[0]->ToString());
^
In file included from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2528:44: note: candidate: ‘v8::MaybeLocal<v8::String> v8::Value::ToString(v8::Local<v8::Context>) const’
V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2528:44: note: candidate expects 1 argument, 0 provided
In file included from /home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8-internal.h:14,
from /home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:25,
from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2544:35: note: candidate: ‘v8::Local<v8::String> v8::Value::ToString(v8::Isolate*) const’
Local<String> ToString(Isolate* isolate) const);
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8config.h:329:48: note: in definition of macro ‘V8_DEPRECATE_SOON’
#define V8_DEPRECATE_SOON(message, declarator) declarator
^~~~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2544:35: note: candidate expects 1 argument, 0 provided
Local<String> ToString(Isolate* isolate) const);
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8config.h:329:48: note: in definition of macro ‘V8_DEPRECATE_SOON’
#define V8_DEPRECATE_SOON(message, declarator) declarator
^~~~~~~~~~
../src/taglib2.cc: In lambda function:
../src/taglib2.cc:104:50: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>)’
return o->Has(Nan::New(name).ToLocalChecked());
^
In file included from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:3449:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)’
V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
^~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:3449:37: note: candidate expects 2 arguments, 1 provided
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:3455:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)’
V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
^~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:3455:37: note: candidate expects 2 arguments, 1 provided
../src/taglib2.cc: In lambda function:
../src/taglib2.cc:112:45: error: no matching function for call to ‘v8::String::Utf8Value::Utf8Value(v8::Local<v8::Value>&)’
std::string s = *v8::String::Utf8Value(r);
^
In file included from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2995:5: note: candidate: ‘v8::String::Utf8Value::Utf8Value(v8::Isolate*, v8::Local<v8::Value>)’
Utf8Value(Isolate* isolate, Local<v8::Value> obj);
^~~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2995:5: note: candidate expects 2 arguments, 1 provided
../src/taglib2.cc: In lambda function:
../src/taglib2.cc:120:64: error: no matching function for call to ‘v8::Value::Int32Value()’
return o->Get(Nan::New(name).ToLocalChecked())->Int32Value();
^
In file included from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2569:40: note: candidate: ‘v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const’
V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
^~~~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2569:40: note: candidate expects 1 argument, 0 provided
../src/taglib2.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE writeTagsSync(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/taglib2.cc:221:77: error: no matching function for call to ‘v8::Value::ToObject()’
if (!picture.IsEmpty() && node::Buffer::HasInstance(picture->ToObject())) {
^
In file included from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2532:44: note: candidate expects 1 argument, 0 provided
In file included from /home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8-internal.h:14,
from /home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:25,
from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
Local<Object> ToObject(Isolate* isolate) const);
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8config.h:329:48: note: in definition of macro ‘V8_DEPRECATE_SOON’
#define V8_DEPRECATE_SOON(message, declarator) declarator
^~~~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2546:35: note: candidate expects 1 argument, 0 provided
Local<Object> ToObject(Isolate* isolate) const);
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8config.h:329:48: note: in definition of macro ‘V8_DEPRECATE_SOON’
#define V8_DEPRECATE_SOON(message, declarator) declarator
^~~~~~~~~~
../src/taglib2.cc:223:61: error: no matching function for call to ‘v8::Value::ToObject()’
char* buffer = node::Buffer::Data(picture->ToObject());
^
In file included from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2532:44: note: candidate expects 1 argument, 0 provided
In file included from /home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8-internal.h:14,
from /home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:25,
from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
Local<Object> ToObject(Isolate* isolate) const);
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8config.h:329:48: note: in definition of macro ‘V8_DEPRECATE_SOON’
#define V8_DEPRECATE_SOON(message, declarator) declarator
^~~~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2546:35: note: candidate expects 1 argument, 0 provided
Local<Object> ToObject(Isolate* isolate) const);
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8config.h:329:48: note: in definition of macro ‘V8_DEPRECATE_SOON’
#define V8_DEPRECATE_SOON(message, declarator) declarator
^~~~~~~~~~
../src/taglib2.cc:224:68: error: no matching function for call to ‘v8::Value::ToObject()’
const size_t blen = node::Buffer::Length(picture->ToObject());
^
In file included from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2532:44: note: candidate expects 1 argument, 0 provided
In file included from /home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8-internal.h:14,
from /home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:25,
from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
Local<Object> ToObject(Isolate* isolate) const);
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8config.h:329:48: note: in definition of macro ‘V8_DEPRECATE_SOON’
#define V8_DEPRECATE_SOON(message, declarator) declarator
^~~~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2546:35: note: candidate expects 1 argument, 0 provided
Local<Object> ToObject(Isolate* isolate) const);
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8config.h:329:48: note: in definition of macro ‘V8_DEPRECATE_SOON’
#define V8_DEPRECATE_SOON(message, declarator) declarator
^~~~~~~~~~
../src/taglib2.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE readTagsSync(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/taglib2.cc:250:69: error: no matching function for call to ‘v8::Value::ToString()’
std::string audio_file = *v8::String::Utf8Value(info[0]->ToString());
^
In file included from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2528:44: note: candidate: ‘v8::MaybeLocal<v8::String> v8::Value::ToString(v8::Local<v8::Context>) const’
V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2528:44: note: candidate expects 1 argument, 0 provided
In file included from /home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8-internal.h:14,
from /home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:25,
from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2544:35: note: candidate: ‘v8::Local<v8::String> v8::Value::ToString(v8::Isolate*) const’
Local<String> ToString(Isolate* isolate) const);
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8config.h:329:48: note: in definition of macro ‘V8_DEPRECATE_SOON’
#define V8_DEPRECATE_SOON(message, declarator) declarator
^~~~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:2544:35: note: candidate expects 1 argument, 0 provided
Local<String> ToString(Isolate* isolate) const);
^~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8config.h:329:48: note: in definition of macro ‘V8_DEPRECATE_SOON’
#define V8_DEPRECATE_SOON(message, declarator) declarator
^~~~~~~~~~
../src/taglib2.cc: In function ‘void Init(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’:
../src/taglib2.cc:507:64: error: no matching function for call to ‘v8::FunctionTemplate::GetFunction()’
Nan::New<v8::FunctionTemplate>(writeTagsSync)->GetFunction());
^
In file included from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:5947:46: note: candidate: ‘v8::MaybeLocal<v8::Function> v8::FunctionTemplate::GetFunction(v8::Local<v8::Context>)’
V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
^~~~~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:5947:46: note: candidate expects 1 argument, 0 provided
../src/taglib2.cc:510:63: error: no matching function for call to ‘v8::FunctionTemplate::GetFunction()’
Nan::New<v8::FunctionTemplate>(readTagsSync)->GetFunction());
^
In file included from ../src/taglib2.cc:4:
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:5947:46: note: candidate: ‘v8::MaybeLocal<v8::Function> v8::FunctionTemplate::GetFunction(v8::Local<v8::Context>)’
V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
^~~~~~~~~~~
/home/usr1/.cmake-js/node-x64/v12.3.1/include/node/v8.h:5947:46: note: candidate expects 1 argument, 0 provided
ninja: build stopped: subcommand failed.
ERR! OMG Process terminated: 1
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Cannot build on the latest node release. Seems to be related to some methods that were deprecated in the v8 api that the newer node uses.
seems related to (among other breakages):
which uses the ‘v8::Value::ToString()’ method which is deprecated and there is a newer method that takes a context argument? I took a quick look for a bit but am too unfamiliar with the v8 api. It also seem that the v8 api documentation is missing for node 11.x and 12.x so it is a bit tricky to track down the docs.
Build errors: