Skip to content

node-gyp failed to rebuild #2267

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
1 task done
DoneDeal0 opened this issue Jul 9, 2023 · 6 comments
Open
1 task done

node-gyp failed to rebuild #2267

DoneDeal0 opened this issue Jul 9, 2023 · 6 comments

Comments

@DoneDeal0
Copy link

DoneDeal0 commented Jul 9, 2023

Issue or Feature

I can't build an Electron app as soon as I install pdfjs-dist (and by extension canvas). I'm not even importing nor using pdfjs-dist. The app can't compile and crashes immediately.

I have installed all the necessary packages with brew: pkg-config, cairo, pango, libpng, jpeg, giflib, librsvg, libffi.

The error is:

> electron-forge start

 Checking your system
 Locating application
 Loading configuration
 Preparing native dependencies: 0 / 1
   node-gyp failed to rebuild '/Users/myname/Desktop/myapp/node_modules/canvas'
 Running generateAssets hook

 Package 'gobject-2.0' requires 'libffi >= 3.0.0' but version of libffi is 2.1
  SOLINK_MODULE(target) Release/canvas-postbuild.node
  CXX(target) Release/obj.target/canvas/src/backend/Backend.o
  In file included from ../src/backend/Backend.cc:1:
  ../src/backend/Backend.h:60:14: warning: private field 'backend' is not used
  Backend* backend;
  ^
  1 warning generated.
  CXX(target) Release/obj.target/canvas/src/backend/ImageBackend.o
  CXX(target) Release/obj.target/canvas/src/backend/PdfBackend.o
  In file included from ../src/backend/PdfBackend.cc:1:
  In file included from ../src/backend/PdfBackend.h:4:
  In file included from ../src/backend/../closure.h:5:
  ../src/backend/../Canvas.h:9:10: fatal error: 'pango/pangocairo.h' file not…
  #include <pango/pangocairo.h>
  ^~~~~~~~~~~~~~~~~~~~
  1 error generated.
  make: *** [Release/obj.target/canvas/src/backend/PdfBackend.o] Error 1
  Error: `make` failed with exit code: 2
  at ChildProcess.onExit (/Users/myname/Desktop/myapp/node_modu…
  at ChildProcess.emit (node:events:513:28)
  at ChildProcess._handle.onexit (node:internal/child_process:291:12)

An unhandled rejection has occurred inside Forge:
Error: node-gyp failed to rebuild '/Users/myname/Desktop/myapp/node_modules/canvas'
at ChildProcess.<anonymous> (/Users/myname/Desktop/myapp/node_modules/@electron/rebuild/lib/module-type/node-gyp/node-gyp.js:118:24)
    at ChildProcess.emit (node:events:513:28)
    at ChildProcess._handle.onexit (node:internal/child_process:291:12)

Environment

  • Version of node-canvas (output of npm list canvas):
  • └─┬ [email protected]
    └── [email protected]
  • Environment
  • node 18.16.1 on Mac OS X 13.4.1 Ventura, Intel 7, no M1/M2)

I have opened an issue on pdfjs's repository.

@cjboco
Copy link

cjboco commented Aug 25, 2023

I'm seeing the same issue attempting to update packages on a React app I'm working on. Log followings:

Edit:
Package: "canvas": "^2.11.2",
Command: npm i

If I remove the canvas package, everything updates fine.

npm ERR! path /Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas
npm ERR! command failed
npm ERR! command sh -c node-pre-gyp install --fallback-to-build --update-binary
npm ERR! Failed to execute '/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/bin/node /Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --update-binary --module=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release/canvas.node --module_name=canvas --module_path=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v108 --python=/usr/bin/python' (1)
npm ERR! node-pre-gyp info it worked if it ends with ok
npm ERR! node-pre-gyp info using [email protected]
npm ERR! node-pre-gyp info using [email protected] | darwin | arm64
npm ERR! node-pre-gyp http GET https://github.com/Automattic/node-canvas/releases/download/v2.11.2/canvas-v2.11.2-node-v108-darwin-unknown-arm64.tar.gz
npm ERR! node-pre-gyp ERR! install response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.11.2/canvas-v2.11.2-node-v108-darwin-unknown-arm64.tar.gz 
npm ERR! node-pre-gyp WARN Pre-built binaries not installable for [email protected] and [email protected] (node-v108 ABI, unknown) (falling back to source compile with node-gyp) 
npm ERR! node-pre-gyp WARN Hit error response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.11.2/canvas-v2.11.2-node-v108-darwin-unknown-arm64.tar.gz 
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | darwin | arm64
npm ERR! gyp info ok 
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | darwin | arm64
npm ERR! gyp info find Python using Python version 3.11.4 found at "/opt/homebrew/opt/[email protected]/bin/python3.11"
npm ERR! gyp info spawn /opt/homebrew/opt/[email protected]/bin/python3.11
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args   '/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args   'binding.gyp',
npm ERR! gyp info spawn args   '-f',
npm ERR! gyp info spawn args   'make',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/config.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Users/[COMPUTER_USER]/Library/Caches/node-gyp/18.16.0/include/node/common.gypi',
npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
npm ERR! gyp info spawn args   '-Dvisibility=default',
npm ERR! gyp info spawn args   '-Dnode_root_dir=/Users/[COMPUTER_USER]/Library/Caches/node-gyp/18.16.0',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/Users/[COMPUTER_USER]/Library/Caches/node-gyp/18.16.0/<(target_arch)/node.lib',
npm ERR! gyp info spawn args   '-Dmodule_root_dir=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas',
npm ERR! gyp info spawn args   '-Dnode_engine=v8',
npm ERR! gyp info spawn args   '--depth=.',
npm ERR! gyp info spawn args   '--no-parallel',
npm ERR! gyp info spawn args   '--generator-output',
npm ERR! gyp info spawn args   'build',
npm ERR! gyp info spawn args   '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! Package pangocairo was not found in the pkg-config search path.
npm ERR! Perhaps you should add the directory containing `pangocairo.pc'
npm ERR! to the PKG_CONFIG_PATH environment variable
npm ERR! No package 'pangocairo' found
npm ERR! gyp: Call to 'pkg-config pangocairo --libs' returned exit status 1 while in binding.gyp. while trying to load binding.gyp
npm ERR! gyp ERR! configure error 
npm ERR! gyp ERR! stack Error: `gyp` failed with exit code: 1
npm ERR! gyp ERR! stack     at ChildProcess.onCpExit (/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:325:16)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:513:28)
npm ERR! gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Darwin 22.6.0
npm ERR! gyp ERR! command "/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/bin/node" "/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--update-binary" "--module=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release/canvas.node" "--module_name=canvas" "--module_path=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v108" "--python=/usr/bin/python"
npm ERR! gyp ERR! cwd /Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas
npm ERR! gyp ERR! node -v v18.16.0
npm ERR! gyp ERR! node-gyp -v v9.4.0
npm ERR! gyp ERR! not ok 
npm ERR! node-pre-gyp ERR! build error 
npm ERR! node-pre-gyp ERR! stack Error: Failed to execute '/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/bin/node /Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --update-binary --module=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release/canvas.node --module_name=canvas --module_path=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v108 --python=/usr/bin/python' (1)
npm ERR! node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/Volumes/[DRIVE]/Develop/random_job/client/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js:89:23)
npm ERR! node-pre-gyp ERR! stack     at ChildProcess.emit (node:events:513:28)
npm ERR! node-pre-gyp ERR! stack     at maybeClose (node:internal/child_process:1091:16)
npm ERR! node-pre-gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:302:5)
npm ERR! node-pre-gyp ERR! System Darwin 22.6.0
npm ERR! node-pre-gyp ERR! command "/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/bin/node" "/Volumes/[DRIVE]/Develop/random_job/client/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build" "--update-binary"
npm ERR! node-pre-gyp ERR! cwd /Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas
npm ERR! node-pre-gyp ERR! node -v v18.16.0
npm ERR! node-pre-gyp ERR! node-pre-gyp -v v1.0.11
npm ERR! node-pre-gyp ERR! not ok

@DoneDeal0
Copy link
Author

You should be fine if you install the packages pango and cairo on your machine (not in the project). On my end, I'm still stuck.

@undermoonn
Copy link

I'm seeing the same issue attempting to update packages on a React app I'm working on. Log followings:

Edit: Package: "canvas": "^2.11.2", Command: npm i

If I remove the canvas package, everything updates fine.

npm ERR! path /Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas
npm ERR! command failed
npm ERR! command sh -c node-pre-gyp install --fallback-to-build --update-binary
npm ERR! Failed to execute '/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/bin/node /Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --update-binary --module=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release/canvas.node --module_name=canvas --module_path=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v108 --python=/usr/bin/python' (1)
npm ERR! node-pre-gyp info it worked if it ends with ok
npm ERR! node-pre-gyp info using [email protected]
npm ERR! node-pre-gyp info using [email protected] | darwin | arm64
npm ERR! node-pre-gyp http GET https://github.com/Automattic/node-canvas/releases/download/v2.11.2/canvas-v2.11.2-node-v108-darwin-unknown-arm64.tar.gz
npm ERR! node-pre-gyp ERR! install response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.11.2/canvas-v2.11.2-node-v108-darwin-unknown-arm64.tar.gz 
npm ERR! node-pre-gyp WARN Pre-built binaries not installable for [email protected] and [email protected] (node-v108 ABI, unknown) (falling back to source compile with node-gyp) 
npm ERR! node-pre-gyp WARN Hit error response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.11.2/canvas-v2.11.2-node-v108-darwin-unknown-arm64.tar.gz 
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | darwin | arm64
npm ERR! gyp info ok 
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using [email protected]
npm ERR! gyp info using [email protected] | darwin | arm64
npm ERR! gyp info find Python using Python version 3.11.4 found at "/opt/homebrew/opt/[email protected]/bin/python3.11"
npm ERR! gyp info spawn /opt/homebrew/opt/[email protected]/bin/python3.11
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args   '/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args   'binding.gyp',
npm ERR! gyp info spawn args   '-f',
npm ERR! gyp info spawn args   'make',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/config.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Users/[COMPUTER_USER]/Library/Caches/node-gyp/18.16.0/include/node/common.gypi',
npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
npm ERR! gyp info spawn args   '-Dvisibility=default',
npm ERR! gyp info spawn args   '-Dnode_root_dir=/Users/[COMPUTER_USER]/Library/Caches/node-gyp/18.16.0',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/Users/[COMPUTER_USER]/Library/Caches/node-gyp/18.16.0/<(target_arch)/node.lib',
npm ERR! gyp info spawn args   '-Dmodule_root_dir=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas',
npm ERR! gyp info spawn args   '-Dnode_engine=v8',
npm ERR! gyp info spawn args   '--depth=.',
npm ERR! gyp info spawn args   '--no-parallel',
npm ERR! gyp info spawn args   '--generator-output',
npm ERR! gyp info spawn args   'build',
npm ERR! gyp info spawn args   '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! Package pangocairo was not found in the pkg-config search path.
npm ERR! Perhaps you should add the directory containing `pangocairo.pc'
npm ERR! to the PKG_CONFIG_PATH environment variable
npm ERR! No package 'pangocairo' found
npm ERR! gyp: Call to 'pkg-config pangocairo --libs' returned exit status 1 while in binding.gyp. while trying to load binding.gyp
npm ERR! gyp ERR! configure error 
npm ERR! gyp ERR! stack Error: `gyp` failed with exit code: 1
npm ERR! gyp ERR! stack     at ChildProcess.onCpExit (/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:325:16)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:513:28)
npm ERR! gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Darwin 22.6.0
npm ERR! gyp ERR! command "/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/bin/node" "/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--update-binary" "--module=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release/canvas.node" "--module_name=canvas" "--module_path=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v108" "--python=/usr/bin/python"
npm ERR! gyp ERR! cwd /Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas
npm ERR! gyp ERR! node -v v18.16.0
npm ERR! gyp ERR! node-gyp -v v9.4.0
npm ERR! gyp ERR! not ok 
npm ERR! node-pre-gyp ERR! build error 
npm ERR! node-pre-gyp ERR! stack Error: Failed to execute '/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/bin/node /Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --update-binary --module=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release/canvas.node --module_name=canvas --module_path=/Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas/build/Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v108 --python=/usr/bin/python' (1)
npm ERR! node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/Volumes/[DRIVE]/Develop/random_job/client/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js:89:23)
npm ERR! node-pre-gyp ERR! stack     at ChildProcess.emit (node:events:513:28)
npm ERR! node-pre-gyp ERR! stack     at maybeClose (node:internal/child_process:1091:16)
npm ERR! node-pre-gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:302:5)
npm ERR! node-pre-gyp ERR! System Darwin 22.6.0
npm ERR! node-pre-gyp ERR! command "/Users/[COMPUTER_USER]/.nvm/versions/node/v18.16.0/bin/node" "/Volumes/[DRIVE]/Develop/random_job/client/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build" "--update-binary"
npm ERR! node-pre-gyp ERR! cwd /Volumes/[DRIVE]/Develop/random_job/client/node_modules/canvas
npm ERR! node-pre-gyp ERR! node -v v18.16.0
npm ERR! node-pre-gyp ERR! node-pre-gyp -v v1.0.11
npm ERR! node-pre-gyp ERR! not ok

#1662 (comment)
@cjboco This may help

@DemonBlackFire
Copy link

How did you ultimately solve this problem,brother.

@DoneDeal0
Copy link
Author

I didn't solve the issue. It only works on a M1 macbook. On a I7 one, it keeps crashing.

@karlhorky
Copy link

If you're also having troubles with the "Package pangocairo was not found in the pkg-config search path" error message (eg. while trying to build canvas from source on Node.js v22), my post here may be helpful for you:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants