Skip to content

Wont build with nodejs 23 #344

@Grothesk242

Description

@Grothesk242

noble does not build on nodejs23
When using the module it says:

2024-11-10 21:57:53.880 - error: ble.0 (26306) Cannot find module '@abandonware/bluetooth-hci-socket'
Require stack:

  • /opt/iobroker/node_modules/@abandonware/noble/lib/hci-socket/hci.js
  • /opt/iobroker/node_modules/@abandonware/noble/lib/hci-socket/bindings.js
  • /opt/iobroker/node_modules/@abandonware/noble/lib/resolve-bindings.js
  • /opt/iobroker/node_modules/@abandonware/noble/with-custom-binding.js
  • /opt/iobroker/node_modules/@abandonware/noble/index.js
  • /opt/iobroker/node_modules/iobroker.ble/build/scanProcess.js

Build log:

> @abandonware/bluetooth-hci-socket@0.5.3-12 install> node-pre-gyp install --build-from-source

node-pre-gyp info using node-pre-gyp@1.0.11

node-pre-gyp info using node@23.1.0 | linux | arm64

gyp info it worked if it ends with okgyp info using node-gyp@10.2.0gyp info using node@23.1.0 | linux | arm64

gyp info ok

gyp info it worked if it ends with ok

gyp info using node-gyp@10.2.0gyp info using node@23.1.0 | linux | arm64

gyp info find Python using Python version 3.12.7 found at "/usr/bin/python3"

gyp info spawn args [gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',gyp info spawn args '-f',gyp info spawn args 'make',gyp info spawn args '-I',
gyp info spawn args '/opt/iobroker/node_modules/@abandonware/bluetooth-hci-socket/build/config.gypi',
gyp info spawn args '-I',gyp info spawn args '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/home/iobroker/.cache/node-gyp/23.1.0/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/home/iobroker/.cache/node-gyp/23.1.0',
gyp info spawn args '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args '-Dnode_lib_file=/home/iobroker/.cache/node-gyp/23.1.0/<(target_arch)/node.lib',
gyp info spawn args '-Dmodule_root_dir=/opt/iobroker/node_modules/@abandonware/bluetooth-hci-socket',
gyp info spawn args '-Dnode_engine=v8',gyp info spawn args '--depth=.',gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',gyp info spawn args 'build',gyp info spawn args '-Goutput_dir=.'
gyp info spawn args ]

gyp info ok

gyp info using node-gyp@10.2.0gyp info using node@23.1.0 | linux | arm64

CXX(target) Release/obj.target/bluetooth_hci_socket/src/BluetoothHciSocket.o

| ^../../../nan/nan.h:208:40: error: expected ‘{’ before ‘<’ token

../../../nan/nan.h: In function ‘bool Nan::IdleNotification(int)’:../../../nan/nan.h:688:39: error: ‘class v8::Isolate’ has no member named ‘IdleNotificationDeadline’ 688 | return v8::Isolate::GetCurrent()->IdleNotificationDeadline( | ^~~~~~~~~~~~~~~~~~~~~~~~

2548 | tpl->SetAccessor( | ^~~~~~~~~~~

2596 | tpl->SetAccessor( | ^~~~~~~~~~~

../../../nan/nan.h: In function ‘bool Nan::SetAccessor(v8::Local<v8::Object>, v8::Local<v8::String>, GetterCallback, SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute)’:../../../nan/nan.h:2642:15: error: ‘class v8::Object’ has no member named ‘SetAccessor’ 2642 | return obj->SetAccessor( | ^~~~~~~~~~~

../../../nan/nan.h: In function ‘void Nan::SetNamedPropertyHandler(v8::Local<v8::ObjectTemplate>, PropertyGetterCallback, PropertySetterCallback, PropertyQueryCallback, PropertyDeleterCallback, PropertyEnumeratorCallback, v8::Local<v8::Value>)’:../../../nan/nan.h:2719:7: error: invalid conversion from ‘Nan::imp::NativePropertyGetter’ {aka ‘void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>&)’} to ‘v8::NamedPropertyGetterCallback’ {aka ‘v8::Intercepted (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>&)’} [-fpermissive]

| ^~~~~~~ | | | Nan::imp::NativePropertySetter {aka void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<v8::Value>&)}/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-template.h:787:35: note: initializing argument 2 of ‘v8::NamedPropertyHandlerConfiguration::NamedPropertyHandlerConfiguration(v8::NamedPropertyGetterCallback, v8::NamedPropertySetterCallback, v8::NamedPropertyQueryCallback, v8::NamedPropertyDeleterCallback, v8::NamedPropertyEnumeratorCallback, v8::Local<v8::Value>, v8::PropertyHandlerFlags)’ 787 | NamedPropertySetterCallback setter = nullptr, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~../../../nan/nan.h:2719:25: error: invalid conversion from ‘Nan::imp::NativePropertyQuery’ {aka ‘void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Integer>&)’} to ‘v8::NamedPropertyQueryCallback’ {aka ‘v8::Intercepted (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Integer>&)’} [-fpermissive] 2719 | getter_, setter_, query_, deleter_, enumerator_, obj)); | ^~~~~~ | | | Nan::imp::NativePropertyQuery {aka void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Integer>&)}/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-template.h:788:34: note: initializing argument 3 of ‘v8::NamedPropertyHandlerConfiguration::NamedPropertyHandlerConfiguration(v8::NamedPropertyGetterCallback, v8::NamedPropertySetterCallback, v8::NamedPropertyQueryCallback, v8::NamedPropertyDeleterCallback, v8::NamedPropertyEnumeratorCallback, v8::Local<v8::Value>, v8::PropertyHandlerFlags)’ 788 | NamedPropertyQueryCallback query = nullptr, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~../../../nan/nan.h:2719:33: error: invalid conversion from ‘void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Boolean>&)’ to ‘v8::NamedPropertyDeleterCallback’ {aka ‘v8::Intercepted (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Boolean>&)’} [-fpermissive] 2719 | getter_, setter_, query_, deleter_, enumerator_, obj)); | ^~~~~~~~ | | | void (*)(v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Boolean>&)/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-template.h:789:36: note: initializing argument 4 of ‘v8::NamedPropertyHandlerConfiguration::NamedPropertyHandlerConfiguration(v8::NamedPropertyGetterCallback, v8::NamedPropertySetterCallback, v8::NamedPropertyQueryCallback, v8::NamedPropertyDeleterCallback, v8::NamedPropertyEnumeratorCallback, v8::Local<v8::Value>, v8::PropertyHandlerFlags)’ 789 | NamedPropertyDeleterCallback deleter = nullptr, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~

../../../nan/nan.h: In function ‘void Nan::SetIndexedPropertyHandler(v8::Local<v8::ObjectTemplate>, IndexGetterCallback, IndexSetterCallback, IndexQueryCallback, IndexDeleterCallback, IndexEnumeratorCallback, v8::Local<v8::Value>)’:../../../nan/nan.h:2789:7: error: invalid conversion from ‘Nan::imp::NativeIndexGetter’ {aka ‘void (*)(unsigned int, const v8::PropertyCallbackInfo<v8::Value>&)’} to ‘v8::IndexedPropertyGetterCallbackV2’ {aka ‘v8::Intercepted (*)(unsigned int, const v8::PropertyCallbackInfo<v8::Value>&)’} [-fpermissive]

2789 | getter_, setter_, query_, deleter_, enumerator_, obj)); | ^~~~~~~ | | | Nan::imp::NativeIndexGetter {aka void (*)(unsigned int, const v8::PropertyCallbackInfo<v8::Value>&)}/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-template.h:865:39: note: initializing argument 1 of ‘v8::IndexedPropertyHandlerConfiguration::IndexedPropertyHandlerConfiguration(v8::IndexedPropertyGetterCallbackV2, v8::IndexedPropertySetterCallbackV2, v8::IndexedPropertyQueryCallbackV2, v8::IndexedPropertyDeleterCallbackV2, v8::IndexedPropertyEnumeratorCallback, v8::Local<v8::Value>, v8::PropertyHandlerFlags)’ 865 | IndexedPropertyGetterCallbackV2 getter = nullptr, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~../../../nan/nan.h:2789:16: error: invalid conversion from ‘Nan::imp::NativeIndexSetter’ {aka ‘void (*)(unsigned int, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<v8::Value>&)’} to ‘v8::IndexedPropertySetterCallbackV2’ {aka ‘v8::Intercepted (*)(unsigned int, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<void>&)’} [-fpermissive] 2789 | getter_, setter_, query_, deleter_, enumerator_, obj)); | ^~~~~~~ | | | Nan::imp::NativeIndexSetter {aka void (*)(unsigned int, v8::Local<v8::Value>, const v8::PropertyCallbackInfo<v8::Value>&)}/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-template.h:866:39: note: initializing argument 2 of ‘v8::IndexedPropertyHandlerConfiguration::IndexedPropertyHandlerConfiguration(v8::IndexedPropertyGetterCallbackV2, v8::IndexedPropertySetterCallbackV2, v8::IndexedPropertyQueryCallbackV2, v8::IndexedPropertyDeleterCallbackV2, v8::IndexedPropertyEnumeratorCallback, v8::Local<v8::Value>, v8::PropertyHandlerFlags)’ 866 | IndexedPropertySetterCallbackV2 setter = nullptr, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~../../../nan/nan.h:2789:25: error: invalid conversion from ‘Nan::imp::NativeIndexQuery’ {aka ‘void (*)(unsigned int, const v8::PropertyCallbackInfo<v8::Integer>&)’} to ‘v8::IndexedPropertyQueryCallbackV2’ {aka ‘v8::Intercepted (*)(unsigned int, const v8::PropertyCallbackInfo<v8::Integer>&)’} [-fpermissive] 2789 | getter_, setter_, query_, deleter_, enumerator_, obj)); | ^~~~~~ | | | Nan::imp::NativeIndexQuery {aka void (*)(unsigned int, const v8::PropertyCallbackInfo<v8::Integer>&)}/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-template.h:867:38: note: initializing argument 3 of ‘v8::IndexedPropertyHandlerConfiguration::IndexedPropertyHandlerConfiguration(v8::IndexedPropertyGetterCallbackV2, v8::IndexedPropertySetterCallbackV2, v8::IndexedPropertyQueryCallbackV2, v8::IndexedPropertyDeleterCallbackV2, v8::IndexedPropertyEnumeratorCallback, v8::Local<v8::Value>, v8::PropertyHandlerFlags)’ 867 | IndexedPropertyQueryCallbackV2 query = nullptr, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~../../../nan/nan.h:2789:33: error: invalid conversion from ‘Nan::imp::NativeIndexDeleter’ {aka ‘void (*)(unsigned int, const v8::PropertyCallbackInfo<v8::Boolean>&)’} to ‘v8::IndexedPropertyDeleterCallbackV2’ {aka ‘v8::Intercepted (*)(unsigned int, const v8::PropertyCallbackInfo<v8::Boolean>&)’} [-fpermissive] 2789 | getter_, setter_, query_, deleter_, enumerator_, obj)); | ^~~~~~~~ | | | Nan::imp::NativeIndexDeleter {aka void (*)(unsigned int, const v8::PropertyCallbackInfo<v8::Boolean>&)}/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-template.h:868:40: note: initializing argument 4 of ‘v8::IndexedPropertyHandlerConfiguration::IndexedPropertyHandlerConfiguration(v8::IndexedPropertyGetterCallbackV2, v8::IndexedPropertySetterCallbackV2, v8::IndexedPropertyQueryCallbackV2, v8::IndexedPropertyDeleterCallbackV2, v8::IndexedPropertyEnumeratorCallback, v8::Local<v8::Value>, v8::PropertyHandlerFlags)’ 868 | IndexedPropertyDeleterCallbackV2 deleter = nullptr, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~

In file included from ../../../nan/nan.h:2954:../../../nan/nan_scriptorigin.h: In constructor ‘Nan::ScriptOrigin::ScriptOrigin(v8::Local<v8::Value>)’:../../../nan/nan_scriptorigin.h:19:55: error: no matching function for call to ‘v8::ScriptOrigin::ScriptOrigin(v8::Isolate*, v8::Local<v8::Value>&)’

33 | , To<int32_t>(column).FromMaybe(0)) {} | ^/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-message.h:64:13: note: candidate: ‘v8::ScriptOrigin::ScriptOrigin(v8::Local<v8::Value>, int, int, bool, int, v8::Local<v8::Value>, bool, bool, bool, v8::Local<v8::Data>)’ 64 | V8_INLINE ScriptOrigin(Local<Value> resource_name, | ^~~~~~~~~~~~/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-message.h:64:39: note: no known conversion for argument 1 from ‘v8::Isolate*’ to ‘v8::Local<v8::Value>’ 64 | V8_INLINE ScriptOrigin(Local<Value> resource_name, | ~~~~~~~~~~~~~^~~~~~~~~~~~~/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-message.h:62:17: note: candidate: ‘constexpr v8::ScriptOrigin::ScriptOrigin(const v8::ScriptOrigin&)’ 62 | class V8_EXPORT ScriptOrigin { | ^~~~~~~~~~~~/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-message.h:62:17: note: candidate expects 1 argument, 4 provided/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-message.h:62:17: note: candidate: ‘constexpr v8::ScriptOrigin::ScriptOrigin(v8::ScriptOrigin&&)’/home/iobroker/.cache/node-gyp/23.1.0/include/node/v8-message.h:62:17: note: candidate expects 1 argument, 4 provided

../src/BluetoothHciSocket.cpp: At global scope:/home/iobroker/.cache/node-gyp/23.1.0/include/node/node.h:1232:7: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘void (*)(v8::Local<v8::Object>)’} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type] 1232 | (node::addon_register_func) (regfunc), \

| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/home/iobroker/.cache/node-gyp/23.1.0/include/node/node.h:1266:3: note: in expansion of macro ‘NODE_MODULE_X’ 1266 | NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage) | ^~~~~~~~~~~~~../src/BluetoothHciSocket.cpp:860:1: note: in expansion of macro ‘NODE_MODULE’ 860 | NODE_MODULE(binding, BluetoothHciSocket::Init); | ^~~~~~~~~~~

make: Leaving directory '/opt/iobroker/node_modules/@abandonware/bluetooth-hci-socket/build'

gyp ERR! System Linux 6.6.51+rpt-rpi-v8

gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--build-from-source" "--module=/opt/iobroker/node_modules/@abandonware/bluetooth-hci-socket/lib/binding/bluetooth_hci_socket.node" "--module_name=bluetooth_hci_socket" "--module_path=/opt/iobroker/node_modules/@abandonware/bluetooth-hci-socket/lib/binding" "--napi_version=9" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v131"

gyp ERR! not ok

node-pre-gyp ERR! build error node-pre-gyp ERR! stack Error: Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --build-from-source --module=/opt/iobroker/node_modules/@abandonware/bluetooth-hci-socket/lib/binding/bluetooth_hci_socket.node --module_name=bluetooth_hci_socket --module_path=/opt/iobroker/node_modules/@abandonware/bluetooth-hci-socket/lib/binding --napi_version=9 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v131' (1)node-pre-gyp ERR! stack at ChildProcess.<anonymous> (/opt/iobroker/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js:89:23)node-pre-gyp ERR! stack at ChildProcess.emit (node:events:507:28)node-pre-gyp ERR! stack at maybeClose (node:internal/child_process:1101:16)node-pre-gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:305:5)

node-pre-gyp ERR! System Linux 6.6.51+rpt-rpi-v8node-pre-gyp ERR! command "/usr/bin/node" "/opt/iobroker/node_modules/.bin/node-pre-gyp" "install" "--build-from-source"node-pre-gyp ERR! cwd /opt/iobroker/node_modules/@abandonware/bluetooth-hci-socketnode-pre-gyp ERR! node -v v23.1.0node-pre-gyp ERR! node-pre-gyp -v v1.0.11node-pre-gyp ERR! not ok Failed to execute '/usr/bin/node /usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --build-from-source --module=/opt/iobroker/node_modules/@abandonware/bluetooth-hci-socket/lib/binding/bluetooth_hci_socket.node --module_name=bluetooth_hci_socket --module_path=/opt/iobroker/node_modules/@abandonware/bluetooth-hci-socket/lib/binding --napi_version=9 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v131' (1)

> @abandonware/noble@1.9.2-25 install

> node-gyp-build

gyp info using node-gyp@10.2.0

gyp info using node@23.1.0 | linux | arm64

gyp info find Python using Python version 3.12.7 found at "/usr/bin/python3"

gyp info spawn args [
gyp info spawn args '/opt/iobroker/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',gyp info spawn args '-f',gyp info spawn args 'make',
gyp info spawn args '-I',gyp info spawn args '/opt/iobroker/node_modules/@abandonware/noble/build/config.gypi',
gyp info spawn args '-I',gyp info spawn args '/opt/iobroker/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',gyp info spawn args '/home/iobroker/.cache/node-gyp/23.1.0/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/home/iobroker/.cache/node-gyp/23.1.0',
gyp info spawn args '-Dnode_gyp_dir=/opt/iobroker/node_modules/node-gyp',
gyp info spawn args '-Dnode_lib_file=/home/iobroker/.cache/node-gyp/23.1.0/<(target_arch)/node.lib',
gyp info spawn args '-Dmodule_root_dir=/opt/iobroker/node_modules/@abandonware/noble',
gyp info spawn args '-Dnode_engine=v8',
gyp info spawn args '--depth=.',
gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',
gyp info spawn args 'build',
gyp info spawn args '-Goutput_dir=.'gyp info spawn args ]

gyp info ok

> usb@2.14.0 install> node-gyp-build

215 packages are looking for funding run `npm fund` for details

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions