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
The package at version 3.1.0 fails to compile when using node version 20.19.0 LTS because the associated header files require C++17 features. Also tested with node version 20.9.0 which works.
System:
MacOS 15.4
Apple clang version 17.0.0 (clang-1700.0.13.3)
Target: arm64-apple-darwin24.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Log output:
node_modules/.pnpm/[email protected]/node_modules/canvas: Running install script, failed in 14.4s
.../[email protected]/node_modules/canvas install$ prebuild-install -r napi || node-gyp rebuild
│ prebuild-install warn install unable to get local issuer certificate
│ gyp info it worked if it ends with ok
│ gyp info using [email protected]
│ gyp info using [email protected] | darwin | arm64
│ gyp info find Python using Python version 3.7.14 found at "/Users/mert/.pyenv/versions/3.7.14/bin/python3"
│ gyp info spawn /Users/mert/.pyenv/versions/3.7.14/bin/python3
│ gyp info spawn args [
│ gyp info spawn args '/Users/mert/.rush/node-v20.19.0/pnpm-8.15.8/node_modules/pnpm/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/mert/Documents/<redacted>/common/temp/node_modules/.pnpm/[email protected]/node_modules/canvas/build/config.gypi',
│ gyp info spawn args '-I',
│ gyp info spawn args '/Users/mert/.rush/node-v20.19.0/pnpm-8.15.8/node_modules/pnpm/dist/node_modules/node-gyp/addon.gypi',
│ gyp info spawn args '-I',
│ gyp info spawn args '/Users/mert/Documents/node-v20.19.0/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/mert/Documents/node-v20.19.0',
│ gyp info spawn args '-Dnode_gyp_dir=/Users/mert/.rush/node-v20.19.0/pnpm-8.15.8/node_modules/pnpm/dist/node_modules/node-gyp',
│ gyp info spawn args '-Dnode_lib_file=/Users/mert/Documents/node-v20.19.0/$(Configuration)/node.lib',
│ gyp info spawn args '-Dmodule_root_dir=/Users/mert/Documents/<redacted>/common/temp/node_modules/.pnpm/[email protected]/node_modules/canvas',
│ 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 ]
│ gyp info spawn make
│ gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
│ SOLINK_MODULE(target) Release/canvas-postbuild.node
│ CXX(target) Release/obj.target/canvas/src/backend/Backend.o
│ CXX(target) Release/obj.target/canvas/src/backend/ImageBackend.o
│ CXX(target) Release/obj.target/canvas/src/backend/PdfBackend.o
│ CXX(target) Release/obj.target/canvas/src/backend/SvgBackend.o
│ CXX(target) Release/obj.target/canvas/src/bmp/BMPParser.o
│ CXX(target) Release/obj.target/canvas/src/Backends.o
│ CXX(target) Release/obj.target/canvas/src/Canvas.o
│ In file included from ../src/Canvas.cc:23:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node_buffer.h:25:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node.h:73:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8.h:24:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8-array-buffer.h:12:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8-local-handle.h:12:
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:465:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ 465 | SHARED_EXTERNAL_POINTER_TAGS(CHECK_SHARED_EXTERNAL_POINTER_TAGS)
│ | ^
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:465:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:465:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:465:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:465:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ 466 | PER_ISOLATE_EXTERNAL_POINTER_TAGS(CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS)
│ | ^
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:693:61: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ 693 | static_assert(kJSObjectType + 1 == kFirstJSApiObjectType);
│ | ^
│ | , ""
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:694:55: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ 694 | static_assert(kJSObjectType < kLastJSApiObjectType);
│ | ^
│ | , ""
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-internal.h:695:63: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ 695 | static_assert(kFirstJSApiObjectType < kLastJSApiObjectType);
│ | ^
│ | , ""
│ In file included from ../src/Canvas.cc:23:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node_buffer.h:25:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node.h:73:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8.h:24:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8-array-buffer.h:13:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8-object.h:9:
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-maybe.h:106:45: error: no template named 'is_lvalue_reference_v' in namespace 'std'; did you mean 'is_lvalue_reference'?
│ 106 | template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
│ | ~~~~~^~~~~~~~~~~~~~~~~~~~~
│ | is_lvalue_reference
│ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_reference.h:32:29: note: 'is_lvalue_reference' declared here
│ 32 | struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference : _BoolConstant<__is_lvalue_reference(_Tp)> {};
│ | ^
│ In file included from ../src/Canvas.cc:23:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node_buffer.h:25:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node.h:73:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8.h:24:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8-array-buffer.h:13:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8-object.h:9:
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-maybe.h:106:69: error: expected '(' for function-style cast or type construction
│ 106 | template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-maybe.h:123:43: error: no template named 'is_lvalue_reference_v' in namespace 'std'; did you mean 'is_lvalue_reference'?
│ 123 | template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
│ | ~~~~~^~~~~~~~~~~~~~~~~~~~~
│ | is_lvalue_reference
│ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_reference.h:32:29: note: 'is_lvalue_reference' declared here
│ 32 | struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference : _BoolConstant<__is_lvalue_reference(_Tp)> {};
│ | ^
│ In file included from ../src/Canvas.cc:23:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node_buffer.h:25:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node.h:73:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8.h:24:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8-array-buffer.h:13:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8-object.h:9:
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-maybe.h:123:67: error: expected '(' for function-style cast or type construction
│ 123 | template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
│ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
│ In file included from ../src/Canvas.cc:23:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node_buffer.h:25:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node.h:73:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8.h:33:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/v8-function.h:11:
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-function-callback.h:151:66: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ 151 | kReturnValueDefaultValueIndex - kReturnValueIndex);
│ | ^
│ | , ""
│ /Users/mert/Documents/node-v20.19.0/include/node/v8-function-callback.h:153:50: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
│ 153 | kIsolateIndex - kReturnValueIndex);
│ | ^
│ | , ""
│ In file included from ../src/Canvas.cc:23:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node_buffer.h:25:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node.h:76:
│ /Users/mert/Documents/node-v20.19.0/include/node/node_version.h:103:9: warning: 'NAPI_VERSION' macro redefined [-Wmacro-redefined]
│ 103 | #define NAPI_VERSION 9
│ | ^
│ /Users/mert/Documents/node-v20.19.0/include/node/js_native_api.h:20:9: note: previous definition is here
│ 20 | #define NAPI_VERSION 8
│ | ^
│ In file included from ../src/Canvas.cc:23:
│ In file included from /Users/mert/Documents/node-v20.19.0/include/node/node_buffer.h:25:
│ /Users/mert/Documents/node-v20.19.0/include/node/node.h:696:8: error: no template named 'optional' in namespace 'std'
│ 696 | std::optional<std::string> builder_script_path;
│ | ~~~~~^
│ In file included from ../src/Canvas.cc:24:
│ ../src/FontParser.h:55:10: error: no template named 'variant' in namespace 'std'
│ 55 | std::variant<std::string, double> value_;
│ | ~~~~~^
│ 23 warnings and 6 errors generated.
│ make: *** [Release/obj.target/canvas/src/Canvas.o] Error 1
│ gyp ERR! build error
│ gyp ERR! stack Error: `make` failed with exit code: 2
│ gyp ERR! stack at ChildProcess.onExit (/Users/mert/.rush/node-v20.19.0/pnpm-8.15.8/node_modules/pnpm/dist/node_modules/node-gyp/lib/build.js:203:23)
│ gyp ERR! stack at ChildProcess.emit (node:events:524:28)
│ gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:293:12)
│ gyp ERR! System Darwin 24.4.0
│ gyp ERR! command "/Users/mert/.nvm/versions/node/v20.19.0/bin/node" "/Users/mert/.rush/node-v20.19.0/pnpm-8.15.8/node_modules/pnpm/dist/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
│ gyp ERR! cwd /Users/mert/Documents/<redacted>/common/temp/node_modules/.pnpm/[email protected]/node_modules/canvas
│ gyp ERR! node -v v20.19.0
│ gyp ERR! node-gyp -v v9.4.1
│ gyp ERR! not ok
The text was updated successfully, but these errors were encountered:
The package at version 3.1.0 fails to compile when using node version 20.19.0 LTS because the associated header files require C++17 features. Also tested with node version 20.9.0 which works.
System:
Log output:
The text was updated successfully, but these errors were encountered: