nan_callbacks.h:55:23: error: ‘AccessorSignature’ is not a member of ‘v8’
Abdullah-Albinali opened this issue · 16 comments
i am not sure i am posting this in the correct place, but i am facing the below issue and i am not sure how to proceed further on this.
appreciate any push in the right direction.
⠙ Building module: node-pty, Completed: 0In file included from ../../nan/nan.h:180,
from ../src/unix/pty.cc:20:
../../nan/nan_callbacks.h:55:23: error: ‘AccessorSignature’ is not a member of ‘v8’
55 | typedef v8::Local<v8::AccessorSignature> Sig;
| ^~~~~~~~~~~~~~~~~
../../nan/nan_callbacks.h:55:40: error: template argument 1 is invalid
55 | typedef v8::Local<v8::AccessorSignature> Sig;
|
Same problem when trying to compile for Electron v20
Building module: fsuipc, Completed: 0D:\devl\electron\fsecosystem\node_modules\nan\nan_callbacks.h(55,23): error C2039: 'AccessorSignature': is not a member of 'v8' [D:\devl\electron\fsecosystem\node_modules\fsuipc\build\fsuipc.vcxproj]
C:\Users\Matt\.electron-gyp\20.0.1\include\node\v8.h(71): message : see declaration of 'v8' [D:\devl\electron\fsecosystem\node_modules\fsuipc\build\fsuipc.vcxproj]
same problem, using electron-rebuild
to rebuild a native module which uses nan
for Electron v20 and getting nan_callbacks.h(55,23): error C2039: 'AccessorSignature': is not a member of 'v8'
and similar errors related to AccessorSignature
"electron": "20.0.2" (V8 10.4, Node.js 16.15.0, Chromium 104)
"nan": "2.16.0
"electron-rebuild": "3.2.9"
A PR has already been sent to fix this - #941.
Confirmed, this PR fix my problem when rebuild electron with node-pty.
confirmed as well! thank!
Let's keep this open for now. It will get closed automatically when the PR lands!
In case someone is looking for workarounds until this is fixed, take a look to: electron/electron#35193
I am using a midi package. Recently I updated to node v 18.10.0 and nw v0.69.1. When I rebuild:
nw-gyp rebuild --target=0.69.1 --arch=x64
I get:
../../nan/nan_callbacks.h:55:23: error: no member named 'AccessorSignature' in namespace 'v8'
typedef v8::Localv8::AccessorSignature Sig;
I have looked at various resolutions to the issue in this thread. I have tried putting this into the midi package.json:
"overrides": {
"nan": "github:jkleinsc/nan#remove_accessor_signature"
},
But still get the same message. Any suggestions?
@RichardFoss I didn't follow that approach and it works in my case. This is what I did:
-
Add a resolution into the package.json (in the root of the repository if it's a monorepo):
-
Add patch-package package to apply a patch after
npm install
:
"scripts": {
"postinstall": "patch-package || true",
},
"devDependencies": {
"patch-package": "^6.4.7",
},
- Create or add the following patch (patches/nan+2.16.0.patch):
diff --git a/node_modules/nan/nan.h b/node_modules/nan/nan.h
index 9e7c59e..0326246 100644
--- a/node_modules/nan/nan.h
+++ b/node_modules/nan/nan.h
@@ -2516,8 +2516,7 @@ inline void SetAccessor(
, SetterCallback setter = 0
, v8::Local<v8::Value> data = v8::Local<v8::Value>()
, v8::AccessControl settings = v8::DEFAULT
- , v8::PropertyAttribute attribute = v8::None
- , imp::Sig signature = imp::Sig()) {
+ , v8::PropertyAttribute attribute = v8::None) {
HandleScope scope;
imp::NativeGetter getter_ =
@@ -2550,9 +2549,6 @@ inline void SetAccessor(
, obj
, settings
, attribute
-#if (NODE_MODULE_VERSION < NODE_18_0_MODULE_VERSION)
- , signature
-#endif
);
}
diff --git a/node_modules/nan/nan_callbacks.h b/node_modules/nan/nan_callbacks.h
index 53ede84..ea81e45 100644
--- a/node_modules/nan/nan_callbacks.h
+++ b/node_modules/nan/nan_callbacks.h
@@ -52,8 +52,6 @@ typedef void(*IndexQueryCallback)(
const PropertyCallbackInfo<v8::Integer>&);
namespace imp {
-typedef v8::Local<v8::AccessorSignature> Sig;
-
static const int kDataIndex = 0;
static const int kFunctionIndex = 1;
Thanks for this comprehensive comment! I have gone down a different path now after feedback from the midi group. I am using an updated midi implementation - read here - https://github.com/julusian/node-midi#readme, and this is working well for me! The nan issue is not present with this implementation.
This solved it for me
https://stackoverflow.com/questions/61657685/npm-doesnt-install-node-gyp-error-class-v8object-has-no-member-named-for
npm install -g npm-check-updates
npm-check-updates -u
npm install
It just upgrades the libraries in package.json to the latest versions
same here :/
@RichardFoss I didn't follow that approach and it works in my case. This is what I did:
- Add a resolution into the package.json (in the root of the repository if it's a monorepo):
- Add patch-package package to apply a patch after
npm install
:"scripts": { "postinstall": "patch-package || true", }, "devDependencies": { "patch-package": "^6.4.7", },
- Create or add the following patch (patches/nan+2.16.0.patch):
diff --git a/node_modules/nan/nan.h b/node_modules/nan/nan.h index 9e7c59e..0326246 100644 --- a/node_modules/nan/nan.h +++ b/node_modules/nan/nan.h @@ -2516,8 +2516,7 @@ inline void SetAccessor( , SetterCallback setter = 0 , v8::Local<v8::Value> data = v8::Local<v8::Value>() , v8::AccessControl settings = v8::DEFAULT - , v8::PropertyAttribute attribute = v8::None - , imp::Sig signature = imp::Sig()) { + , v8::PropertyAttribute attribute = v8::None) { HandleScope scope; imp::NativeGetter getter_ = @@ -2550,9 +2549,6 @@ inline void SetAccessor( , obj , settings , attribute -#if (NODE_MODULE_VERSION < NODE_18_0_MODULE_VERSION) - , signature -#endif ); } diff --git a/node_modules/nan/nan_callbacks.h b/node_modules/nan/nan_callbacks.h index 53ede84..ea81e45 100644 --- a/node_modules/nan/nan_callbacks.h +++ b/node_modules/nan/nan_callbacks.h @@ -52,8 +52,6 @@ typedef void(*IndexQueryCallback)( const PropertyCallbackInfo<v8::Integer>&); namespace imp { -typedef v8::Local<v8::AccessorSignature> Sig; - static const int kDataIndex = 0; static const int kFunctionIndex = 1;
how to add this patch and where?
still happens when tried to move to pnpm...
It works for me if I use yarn
yarn add nan
If someone is wondering Node.JS 20 build failure use similar approach as above with updated version since some package did not update it on their latest like: sharp
"resolutions": {
"nan": "2.18.0"
},