Skip to content

src: add `node.h` include to `module_wrap.h`

All other classes using NODE_EXTERN include node.h, and not including it causes the following compilation errors in Electron:

Build Failure

In file included from ../../third_party/electron_node/src/module_wrap.cc:1:
../../third_party/electron_node/src/module_wrap.h:34:1: error: unknown type name 'NODE_EXTERN'
   34 | NODE_EXTERN v8::MaybeLocal<v8::Promise> ImportModuleDynamically(
      | ^
../../third_party/electron_node/src/module_wrap.h:34:17: error: template specialization requires 'template<>'
   34 | NODE_EXTERN v8::MaybeLocal<v8::Promise> ImportModuleDynamically(
      |                 ^         ~~~~~~~~~~~~~
      | template<>
../../third_party/electron_node/src/module_wrap.h:34:17: error: no variable template matches specialization
../../third_party/electron_node/src/module_wrap.h:34:40: error: expected ';' after top level declarator
   34 | NODE_EXTERN v8::MaybeLocal<v8::Promise> ImportModuleDynamically(
      |                                        ^
      |                                        ;
../../third_party/electron_node/src/module_wrap.h:41:19: error: variable has incomplete type 'class NODE_EXTERN'
   41 | class NODE_EXTERN ModuleWrap : public BaseObject {
      |                   ^
../../third_party/electron_node/src/module_wrap.h:41:7: note: forward declaration of 'node::loader::NODE_EXTERN'
   41 | class NODE_EXTERN ModuleWrap : public BaseObject {
      |       ^
../../third_party/electron_node/src/module_wrap.h:41:30: error: expected ';' after top level declarator
   41 | class NODE_EXTERN ModuleWrap : public BaseObject {
      |                              ^
      |                              ;
../../third_party/electron_node/src/module_wrap.h:41:32: error: expected unqualified-id
   41 | class NODE_EXTERN ModuleWrap : public BaseObject {
      |                                ^
../../third_party/electron_node/src/module_wrap.cc:53:1: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
   53 | ModuleWrap::ModuleWrap(Realm* realm,
      | ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
../../third_party/electron_node/src/module_wrap.cc:53:1: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
   53 | ModuleWrap::ModuleWrap(Realm* realm,
      | ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
../../third_party/electron_node/src/module_wrap.cc:76:1: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
   76 | ModuleWrap::~ModuleWrap() {
      | ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
../../third_party/electron_node/src/module_wrap.cc:86:16: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
   86 | Local<Context> ModuleWrap::context() const {
      |                ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
../../third_party/electron_node/src/module_wrap.cc:94:13: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
   94 | ModuleWrap* ModuleWrap::GetFromModule(Environment* env,
      |             ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
../../third_party/electron_node/src/module_wrap.cc:107:6: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
  107 | void ModuleWrap::New(const FunctionCallbackInfo<Value>& args) {
      |      ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
../../third_party/electron_node/src/module_wrap.cc:275:6: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
  275 | void ModuleWrap::Link(const FunctionCallbackInfo<Value>& args) {
      |      ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
../../third_party/electron_node/src/module_wrap.cc:339:6: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
  339 | void ModuleWrap::Instantiate(const FunctionCallbackInfo<Value>& args) {
      |      ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
../../third_party/electron_node/src/module_wrap.cc:364:6: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
  364 | void ModuleWrap::Evaluate(const FunctionCallbackInfo<Value>& args) {
      |      ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
../../third_party/electron_node/src/module_wrap.cc:440:6: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
  440 | void ModuleWrap::GetNamespace(const FunctionCallbackInfo<Value>& args) {
      |      ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
../../third_party/electron_node/src/module_wrap.cc:466:6: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
  466 | void ModuleWrap::GetStatus(const FunctionCallbackInfo<Value>& args) {
      |      ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
../../third_party/electron_node/src/module_wrap.cc:476:6: error: incomplete type 'node::loader::ModuleWrap' named in nested name specifier
  476 | void ModuleWrap::GetStaticDependencySpecifiers(
      |      ^~~~~~~~~~~~
../../third_party/electron_node/src/env.h:104:7: note: forward declaration of 'node::loader::ModuleWrap'
  104 | class ModuleWrap;
      |       ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]

This allows Electron to remove a patch

Merge request reports

Loading