Skip to content

Upgrading from v8.1.0 to v8.2.0 breaks compilation #1584

@ddolcimascolo

Description

@ddolcimascolo

Hi all,

In a Renovate MR upgrading node-addon-api to v8.2.0 (from v8.1.0) my build fails with lots of compilation errors in napi.h :

In file included from ../src/supersecret.cc:3:                                                                                                                                                          
/data/dev/supersecret/node_modules/node-addon-api/napi.h:317:3: error: ‘node_api_nogc_env’ does not name a type                                                                                         
  317 |   node_api_nogc_env _env;                                                                                                                                                                       
      |   ^~~~~~~~~~~~~~~~~                                                                                                                                                                             
/data/dev/supersecret/node_modules/node-addon-api/napi.h:325:29: error: expected ‘)’ before ‘env’                                                                                                       
  325 |   BasicEnv(node_api_nogc_env env);                                                                                                                                                              
      |           ~                 ^~~~                                                                                                                                                                
      |                             )
/data/dev/supersecret/node_modules/node-addon-api/napi.h:326:12: error: expected type-specifier before ‘node_api_nogc_env’
  326 |   operator node_api_nogc_env() const;
      |            ^~~~~~~~~~~~~~~~~
/data/dev/supersecret/node_modules/node-addon-api/napi.h: In member function ‘bool Napi::BasicEnv::operator==(const Napi::BasicEnv&) const’:
/data/dev/supersecret/node_modules/node-addon-api/napi.h:335:12: error: ‘_env’ was not declared in this scope
  335 |     return _env == other._env;
      |            ^~~~
/data/dev/supersecret/node_modules/node-addon-api/napi.h:335:26: error: ‘const class Napi::BasicEnv’ has no member named ‘_env’
  335 |     return _env == other._env;
      |                          ^~~~
/data/dev/supersecret/node_modules/node-addon-api/napi.h: In member function ‘bool Napi::BasicEnv::operator==(std::nullptr_t) const’:
/data/dev/supersecret/node_modules/node-addon-api/napi.h:338:12: error: ‘_env’ was not declared in this scope
  338 |     return _env == nullptr;
      |            ^~~~
/data/dev/supersecret/node_modules/node-addon-api/napi.h: At global scope:
/data/dev/supersecret/node_modules/node-addon-api/napi.h:2467:32: error: ‘node_api_nogc_env’ has not been declared
 2467 |   static void FinalizeCallback(node_api_nogc_env env, void* data, void* hint);
      |                                ^~~~~~~~~~~~~~~~~
In file included from /data/dev/supersecret/node_modules/node-addon-api/napi.h:3257,
                 from ../src/supersecret.cc:3:
/data/dev/supersecret/node_modules/node-addon-api/napi-inl.h:38:13: error: variable or field ‘default_basic_finalizer’ declared void
   38 | inline void default_basic_finalizer(node_api_nogc_env /*env*/,
      |             ^~~~~~~~~~~~~~~~~~~~~~~
/data/dev/supersecret/node_modules/node-addon-api/napi-inl.h:38:37: error: ‘node_api_nogc_env’ was not declared in this scope
   38 | inline void default_basic_finalizer(node_api_nogc_env /*env*/,
      |                                     ^~~~~~~~~~~~~~~~~
/data/dev/supersecret/node_modules/node-addon-api/napi-inl.h:39:37: error: expected primary-expression before ‘void’
   39 |                                     void* data,
      |                                     ^~~~
/data/dev/supersecret/node_modules/node-addon-api/napi-inl.h:40:37: error: expected primary-expression before ‘void’
   40 |                                     void* /*hint*/) {
      |                                     ^~~~
/data/dev/supersecret/node_modules/node-addon-api/napi-inl.h:49:11: error: ‘node_api_nogc_finalize’ has not been declared
   49 |           node_api_nogc_finalize finalizer = default_basic_finalizer<FreeType>>
      |           ^~~~~~~~~~~~~~~~~~~~~~
/data/dev/supersecret/node_modules/node-addon-api/napi-inl.h:49:46: error: ‘default_basic_finalizer’ was not declared in this scope
   49 |           node_api_nogc_finalize finalizer = default_basic_finalizer<FreeType>>

For reference, my binding.gyp file:

{
  "targets": [
    {
      "target_name": "supersecret",
      "cflags!": [ "-fno-exceptions" ],
      "cflags_cc!": [ "-fno-exceptions" ],
      "sources": [
        "src/supersecret.cc"
      ],
      "include_dirs": [
        "<!@(node -p \"require('node-addon-api').include\")"
      ]
    }
  ]
}

And I'm building with node-gyp rebuild

Do I need to change something with this release or is it something unexpected?

Thanks, and keep up the great work !

David

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions