You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
NAN 2.27.0 incompatible with V8 13.x (Electron 42 / Node 24): v8::External API breaking changes #1021
OS: Windows 10 (also reproducible on other platforms)
node-gyp: 12.3.0
Description
Building any NAN-based native addon against Electron 42 (V8 13.x) headers
fails due to breaking changes in v8::External API:
v8::External::Value() now requires a v8::Isolate* parameter
v8::External::New() signature changed
The errors originate inside NAN's own files:
nan_callbacks_12_inl.h
nan_implementation_12_inl.h
Error Output
nan_callbacks_12_inl.h(213,46): error C2660:
'v8::External::Value': function does not take 0 arguments
nan_implementation_12_inl.h(79,24): error C2660:
'v8::External::New': function does not take 2 arguments
In nan_callbacks_12_inl.h, NAN calls ->Value() with no arguments.
In V8 13.x (shipped with Electron 42 / Node 24), v8::External::Value()
now requires a v8::Isolate*:
NAN should handle the v8::External API change in V8 13.x, as it has
handled previous V8 API changes, so addons using NAN compile against
Electron 42 / Node 24 without modification.
Notes
This affects all NAN-based addons targeting Electron 42+, which is
a significant portion of the Electron native addon ecosystem.
Hi @oalfroukh — yes, #1015 covers both errors you listed. The PR routes the New and Value calls through helpers that pass v8::kExternalPointerTypeTagDefault when V8 exposes the new tagged API, so the errors in nan_implementation_12_inl.h and nan_callbacks_12_inl.h are gone.
If you want to unblock builds in the meantime, you can point your package.json at the branch:
Activity
oalfroukh commentedon Jun 2, 2026
Hi @gdavidkov
Do you think yr PR #1015 can fix this issue?
gdavidkov commentedon Jun 2, 2026
Hi @oalfroukh — yes, #1015 covers both errors you listed. The PR routes the New and Value calls through helpers that pass v8::kExternalPointerTypeTagDefault when V8 exposes the new tagged API, so the errors in nan_implementation_12_inl.h and nan_callbacks_12_inl.h are gone.
If you want to unblock builds in the meantime, you can point your package.json at the branch:
agracio commentedon Jun 3, 2026
While PR is pending you can use an unofficial branch that has this PR merged.
package.json