WiseLibs / better-sqlite3

The fastest and simplest library for SQLite3 in Node.js.
MIT License
5.37k stars 394 forks source link

Node.js v20 support #1022

Closed mcollina closed 1 year ago

mcollina commented 1 year ago

Currently installing on Node.js v20 fails with the following error on Mac OS X (arm):


npm ERR! code 1
npm ERR! path /Users/matteo/Repositories/sqlite-pool/node_modules/better-sqlite3
npm ERR! command failed
npm ERR! command sh -c prebuild-install || npm run build-release
npm ERR! > better-sqlite3@7.6.2 build-release
npm ERR! > node-gyp rebuild --release
npm ERR!
npm ERR!   TOUCH ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm ERR!   ACTION deps_sqlite3_gyp_locate_sqlite3_target_copy_builtin_sqlite3 ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm ERR!   TOUCH Release/obj.target/deps/locate_sqlite3.stamp
npm ERR!   CC(target) Release/obj.target/sqlite3/gen/sqlite3/sqlite3.o
npm ERR!   LIBTOOL-STATIC Release/sqlite3.a
npm ERR!   CXX(target) Release/obj.target/better_sqlite3/src/better_sqlite3.o
npm ERR! rm ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm ERR! prebuild-install warn install No prebuilt binaries found (target=20.3.0 runtime=node arch=arm64 libc= platform=darwin)
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.3.1
npm ERR! gyp info using node@20.3.0 | darwin | arm64
npm ERR! gyp info find Python using Python version 3.10.9 found at "/opt/homebrew/opt/python@3.10/bin/python3.10"
npm ERR! gyp http GET https://nodejs.org/download/release/v20.3.0/node-v20.3.0-headers.tar.gz
npm ERR! gyp http 200 https://nodejs.org/download/release/v20.3.0/node-v20.3.0-headers.tar.gz
npm ERR! gyp http GET https://nodejs.org/download/release/v20.3.0/SHASUMS256.txt
npm ERR! gyp http 200 https://nodejs.org/download/release/v20.3.0/SHASUMS256.txt
npm ERR! gyp info spawn /opt/homebrew/opt/python@3.10/bin/python3.10
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args   '/Users/matteo/.nvm/versions/node/v20.3.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   '/Users/matteo/Repositories/sqlite-pool/node_modules/better-sqlite3/build/config.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/Users/matteo/.nvm/versions/node/v20.3.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/matteo/Library/Caches/node-gyp/20.3.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/matteo/Library/Caches/node-gyp/20.3.0',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/Users/matteo/.nvm/versions/node/v20.3.0/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/Users/matteo/Library/Caches/node-gyp/20.3.0/<(target_arch)/node.lib',
npm ERR! gyp info spawn args   '-Dmodule_root_dir=/Users/matteo/Repositories/sqlite-pool/node_modules/better-sqlite3',
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! gyp info spawn make
npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
npm ERR! In file included from ../src/better_sqlite3.cpp:4:
npm ERR! In file included from ./src/better_sqlite3.lzz:11:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/node.h:73:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8.h:24:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-array-buffer.h:12:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-local-handle.h:12:
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:465:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! SHARED_EXTERNAL_POINTER_TAGS(CHECK_SHARED_EXTERNAL_POINTER_TAGS)
npm ERR!                              ^
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:465:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:465:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:465:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:465:30: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! PER_ISOLATE_EXTERNAL_POINTER_TAGS(CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS)
npm ERR!                                   ^
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:466:35: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:693:61: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR!     static_assert(kJSObjectType + 1 == kFirstJSApiObjectType);
npm ERR!                                                             ^
npm ERR!                                                             , ""
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:694:55: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR!     static_assert(kJSObjectType < kLastJSApiObjectType);
npm ERR!                                                       ^
npm ERR!                                                       , ""
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-internal.h:695:63: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR!     static_assert(kFirstJSApiObjectType < kLastJSApiObjectType);
npm ERR!                                                               ^
npm ERR!                                                               , ""
npm ERR! In file included from ../src/better_sqlite3.cpp:4:
npm ERR! In file included from ./src/better_sqlite3.lzz:11:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/node.h:73:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8.h:24:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-array-buffer.h:13:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-object.h:9:
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.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'?
npm ERR!   template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
npm ERR!                                        ~~~~~^~~~~~~~~~~~~~~~~~~~~
npm ERR!                                             is_lvalue_reference
npm ERR! /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_reference.h:26:29: note: 'is_lvalue_reference' declared here
npm ERR! struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference : _BoolConstant<__is_lvalue_reference(_Tp)> { };
npm ERR!                             ^
npm ERR! In file included from ../src/better_sqlite3.cpp:4:
npm ERR! In file included from ./src/better_sqlite3.lzz:11:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/node.h:73:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8.h:24:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-array-buffer.h:13:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-object.h:9:
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-maybe.h:106:69: error: expected '(' for function-style cast or type construction
npm ERR!   template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
npm ERR!                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.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'?
npm ERR! template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
npm ERR!                                      ~~~~~^~~~~~~~~~~~~~~~~~~~~
npm ERR!                                           is_lvalue_reference
npm ERR! /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__type_traits/is_reference.h:26:29: note: 'is_lvalue_reference' declared here
npm ERR! struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference : _BoolConstant<__is_lvalue_reference(_Tp)> { };
npm ERR!                             ^
npm ERR! In file included from ../src/better_sqlite3.cpp:4:
npm ERR! In file included from ./src/better_sqlite3.lzz:11:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/node.h:73:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8.h:24:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-array-buffer.h:13:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-object.h:9:
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-maybe.h:123:67: error: expected '(' for function-style cast or type construction
npm ERR! template <class T, std::enable_if_t<!std::is_lvalue_reference_v<T>>* = nullptr>
npm ERR!                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
npm ERR! In file included from ../src/better_sqlite3.cpp:4:
npm ERR! In file included from ./src/better_sqlite3.lzz:11:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/node.h:73:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8.h:33:
npm ERR! In file included from /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-function.h:11:
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-function-callback.h:151:66: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR!                 kReturnValueDefaultValueIndex - kReturnValueIndex);
npm ERR!                                                                  ^
npm ERR!                                                                  , ""
npm ERR! /Users/matteo/Library/Caches/node-gyp/20.3.0/include/node/v8-function-callback.h:153:50: warning: 'static_assert' with no message is a C++17 extension [-Wc++17-extensions]
npm ERR!                 kIsolateIndex - kReturnValueIndex);
npm ERR!                                                  ^
npm ERR!                                                  , ""
npm ERR! ./src/util/macros.lzz:157:21: error: no member named 'AccessorSignature' in namespace 'v8'
npm ERR!                 v8::AccessorSignature::New(isolate, recv)
npm ERR!                 ~~~~^
npm ERR! ./src/objects/database.lzz:180:21: warning: variable 'status' set but not used [-Wunused-but-set-variable]
npm ERR!                 int status = sqlite3_db_config(db_handle, SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION, 1, NULL);
npm ERR!                     ^
npm ERR! ./src/util/binder.lzz:37:51: error: no member named 'CreationContext' in 'v8::Object'
npm ERR!                 v8::Local<v8::Context> ctx = obj->CreationContext();
npm ERR!                                              ~~~~~^
npm ERR! 23 warnings and 6 errors generated.
npm ERR! make: *** [Release/obj.target/better_sqlite3/src/better_sqlite3.o] Error 1
npm ERR! gyp ERR! build error
npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
npm ERR! gyp ERR! stack     at ChildProcess.onExit (/Users/matteo/.nvm/versions/node/v20.3.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:203:23)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:511:28)
npm ERR! gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:293:12)
npm ERR! gyp ERR! System Darwin 22.5.0
npm ERR! gyp ERR! command "/Users/matteo/.nvm/versions/node/v20.3.0/bin/node" "/Users/matteo/.nvm/versions/node/v20.3.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--release"
npm ERR! gyp ERR! cwd /Users/matteo/Repositories/sqlite-pool/node_modules/better-sqlite3
npm ERR! gyp ERR! node -v v20.3.0
npm ERR! gyp ERR! node-gyp -v v9.3.1
npm ERR! gyp ERR! not ok

npm ERR! A complete log of this run can be found in: /Users/matteo/.npm/_logs/2023-06-15T12_38_09_937Z-debug-0.log
mcollina commented 1 year ago

nevermind, I'm using an old version