← All tasks
javascriptkelektiv/node.bcrypt.js #1029Not a task: already works

`no member named` errors with node-addon-api@^5

envgap__kelektiv__node.bcrypt.js-1029

01 / FAILURE SIGNATURE

As reported upstream

../metadata.cc:233:46: error: no member named 'NewOrCopy' in 'Napi::Buffer<char>'
Not a benchmark task.
  • The project already builds and runs before the fix, so there is nothing to repair.

02 / ENVIRONMENT RECIPE

Base commit
d8195c6c4bb170b3b2ee2d04047a60fda80aa091
Manifest
package.json
Reproduce
Awaiting issue-specific recipe
Run under trace
Awaiting a meaningful runtime command

03 / ORIGINAL ISSUE TEXT

kelektiv/node.bcrypt.js #1029 · read the original issue
## What went wrong?



Installing `sharp@0.33.2` and `bcrypt@5.1.1` together causes `no member named` errors:



```json

{

  "dependencies": {

    "bcrypt": "5.1.1",

    "sharp": "0.33.2"

  }

}

```



Error logs:



```

$ pnpm i

 WARN  2 deprecated subdependencies found: abab@2.0.6, domexception@4.0.0

Packages: +843

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Progress: resolved 912, reused 844, downloaded 0, added 24, done

node_modules/.pnpm/sharp@0.33.2/node_modules/sharp: Running install script, failed in 5.1s

.../sharp@0.33.2/node_modules/sharp install$ node install/check

│ sharp: Detected globally-installed libvips v8.15.2

│ sharp: Attempting to build from source via node-gyp

│ sharp: Found node-addon-api

│ sharp: Found node-gyp version 10.1.0

│ sharp: See https://sharp.pixelplumbing.com/install#building-from-source

│ gyp info it worked if it ends with ok

│ gyp info using node-gyp@10.0.1

│ gyp info using node@20.12.1 | darwin | arm64

│ gyp info chdir src

│ gyp info find Python using Python version 3.12.2 found at "/opt/homebrew/opt/python@3.12/bin/python3.12"

│ gyp info spawn /opt/homebrew/opt/python@3.12/bin/python3.12

│ gyp info spawn args [

│ gyp info spawn args '/Users/k/.cache/node/corepack/v1/pnpm/9.0.0-beta.3/dist/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 '/Users/k/p/next-js-example-winter-2024-atvie/node_modules/.pnpm/sharp@0.33.2/node_modules/sharp/src/build/config.gypi',

│ gyp info spawn args '-I',

│ gyp info spawn args '/Users/k/.cache/node/corepack/v1/pnpm/9.0.0-beta.3/dist/node_modules/node-gyp/addon.gypi',

│ gyp info spawn args '-I',

│ gyp info spawn args '/Users/k/Library/Caches/node-gyp/20.12.1/include/node/common.gypi',

│ gyp info spawn args '-Dlibrary=shared_library',

│ gyp info spawn args '-Dvisibility=default',

│ gyp info spawn args '-Dnode_root_dir=/Users/k/Library/Caches/node-gyp/20.12.1',

│ gyp info spawn args '-Dnode_gyp_dir=/Users/k/.cache/node/corepack/v1/pnpm/9.0.0-beta.3/dist/node_modules/node-gyp',

│ gyp info spawn args '-Dnode_lib_file=/Users/k/Library/Caches/node-gyp/20.12.1/<(target_arch)/node.lib',

│ gyp info spawn args '-Dmodule_root_dir=/Users/k/p/next-js-example-winter-2024-atvie/node_modules/.pnpm/sharp@0.33.2/node_modules/sharp/src',

│ 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 ]

│ <string>:114: SyntaxWarning: invalid escape sequence '\/'

│ gyp info spawn make

│ gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]

│   CC(target) Release/obj.target/nothing/../../../../node-addon-api@5.1.0/node_modules/node-addon-api/nothing.o

│   LIBTOOL-STATIC Release/nothing.a

│ warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: archive library: Release/nothing.a the table of contents i…

│   TOUCH Release/obj.target/libvips-cpp.stamp

│   CXX(target) Release/obj.target/sharp-darwin-arm64/common.o

│   CXX(target) Release/obj.target/sharp-darwin-arm64/metadata.o

│ ../metadata.cc:233:46: error: no member named 'NewOrCopy' in 'Napi::Buffer<char>'

│         info.Set("exif", Napi::Buffer<char>::NewOrCopy(env, baton->exif, baton->exifLength, sharp::FreeCallback));

│                          ~~~~~~~~~~~~~~~~~~~~^

│ ../metadata.cc:236:45: error: no member named 'NewOrCopy' in 'Napi::Buffer<char>'

│         info.Set("icc", Napi::Buffer<char>::NewOrCopy(env, baton->icc, baton->iccLength, sharp::FreeCallback));

│                         ~~~~~~~~~~~~~~~~~~~~^

│ ../metadata.cc:239:46: error: no member named 'NewOrCopy' in 'Napi::Buffer<char>'

│         info.Set("iptc", Napi::Buffer<char>::NewOrCopy(env, baton->iptc, baton->iptcLength, sharp::FreeCallback));

│                          ~~~~~~~~~~~~~~~~~~~~^

│ ../metadata.cc:242:45: error: no member named 'NewOrCopy' in 'Napi::Buffer<char>'

│         info.Set("xmp", Napi::Buffer<char>::NewOrCopy(env, baton->xmp, baton->xmpLength, sharp::FreeCallback));

│                         ~~~~~~~~~~~~~~~~~~~~^

│ ../metadata.cc:246:31: error: no member named 'NewOrCopy' in 'Napi::Buffer<char>'

│           Napi::Buffer<char>::NewOrCopy(env, baton->tifftagPhotoshop,

│           ~~~~~~~~~~~~~~~~~~~~^

│ 5 errors generated.

│ make: *** [Release/obj.target/sharp-darwin-arm64/metadata.o] Error 1

│ gyp ERR! build error 

│ gyp ERR! stack Error: `make` failed with exit code: 2

│ gyp ERR! stack at ChildProcess.<anonymous> (/Users/k/.cache/node/corepack/v1/pnpm/9.0.0-beta.3/dist/node_modules/node-gyp/lib/build.js:209:23)

│ gyp ERR! System Darwin 23.4.0

│ gyp ERR! command "/opt/homebrew/Cellar/node@20/20.12.1/bin/node" "/Users/k/.cache/node/corepack/v1/pnpm/9.0.0-beta.3/dist/node_modules/node-gyp/bin/node-gyp.js" "r…

│ gyp ERR! cwd /Users/k/p/next-js-example-winter-2024-atvie/node_modules/.pnpm/sharp@0.33.2/node_modules/sharp/src

│ gyp ERR! node -v v20.12.1

│ gyp ERR! node-gyp -v v10.0.1

│ gyp ERR! not ok 

└─ Failed in 5.1s at /Users/k/p/next-js-example-winter-2024-atvie/node_modules/.pnpm/sharp@0.33.2/node_modules/sharp

 ELIFECYCLE  Command failed with exit code 1.

```



Upon further investigation, there is an older version of `node-addon-api` (version `5.1.0`) in the pnpm lockfile, which appears to be causing the issue ([`sharp` requires `node-addon-api@>=7.0.0`](https://sharp.pixelplumbing.com/install#:~:text=node%2Daddon%2Dapi%20%20version%207%2B)):



```

  bcrypt@5.1.1(encoding@0.1.13):

    dependencies:

      '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13)

      node-addon-api: 5.1.0

    transitivePeerDependencies:

      - encoding

      - supports-color

```



Also visible in the `bcrypt` `package.json`:



https://github.com/kelektiv/node.bcrypt.js/blob/d8195c6c4bb170b3b2ee2d04047a60fda80aa091/package.json#L33



Removing the `bcrypt` from the `package.json` appears to make the error go away again.



## What did you expect to happen?



`bcrypt@5.1.1` should be able to coexist with `sharp@0.33.2` without causing `sharp` build failures



## Which version of nodejs and OS?



Node.js: v20.12.1

Package manager: pnpm (latest and v9 beta)

macOS: Sonoma 14.4.1 (23E224)
Continue on GitHub ↗

04 / LABELS

Labels from the report text only; not yet run

No supported category has been assigned.

Label rules and the text that matched
[]