Skip to content

Fails to compile with Node 20.19.0 #2504

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
MLuleci opened this issue Apr 15, 2025 · 0 comments
Open

Fails to compile with Node 20.19.0 #2504

MLuleci opened this issue Apr 15, 2025 · 0 comments

Comments

@MLuleci
Copy link

MLuleci commented Apr 15, 2025

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant