Thanks for the great project, I've been using it for a number of years.
I recently ran in to a problem when upgrading to Node.js 20. On running npm i on a dependent project it fails to to install graphene-pk11-2.3.2 due to a handful of node-gyp errors (these appear to be coming from the pkcs11js dependency, so maybe I should raise the query on that project of yours instead?):
npm ERR! /Users/mark/Library/Caches/node-gyp/20.11.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! /Users/mark/Library/Caches/node-gyp/20.11.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/mark/Library/Caches/node-gyp/20.11.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! /Users/mark/Library/Caches/node-gyp/20.11.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>>*>
After a bit of poking around I determined that is_lvalue_reference_v appears to be a C++17 feature which is just a call to is_lvalue_reference and then ::value on the result so I hacked my local cache of v8 headers and everything works as expected i.e. change:
template <class U, std::enable_if_t<!std::is_lvalue_reference_v<U>>*>
to:
template <class U, std::enable_if_t<!std::is_lvalue_reference<U>::value>*>
in /Users/mark/Library/Caches/node-gyp/20.11.0/include/node/v8-maybe.h.
Afraid this isn't my area of expertise, but I'm guessing that you might be able to pass the C++17 flags in to node-gyp to avoid having to make these changes to the v8 headers?
For reference I'm using:
Mac OSX 14.2.1
Node.js 20.11.0 (through Homebrew)
node-gyp@10.0.1
Apple clang version 15.0.0 (clang-1500.1.0.2.5)
Hi,
Thanks for the great project, I've been using it for a number of years.
I recently ran in to a problem when upgrading to Node.js 20. On running
npm i
on a dependent project it fails to to installgraphene-pk11-2.3.2
due to a handful ofnode-gyp
errors (these appear to be coming from thepkcs11js
dependency, so maybe I should raise the query on that project of yours instead?):After a bit of poking around I determined that
is_lvalue_reference_v
appears to be a C++17 feature which is just a call tois_lvalue_reference
and then::value
on the result so I hacked my local cache of v8 headers and everything works as expected i.e. change:to:
and:
to:
in
/Users/mark/Library/Caches/node-gyp/20.11.0/include/node/v8-maybe.h
.Afraid this isn't my area of expertise, but I'm guessing that you might be able to pass the C++17 flags in to
node-gyp
to avoid having to make these changes to the v8 headers?For reference I'm using:
Mac OSX
14.2.1
Node.js20.11.0
(through Homebrew) node-gyp@10.0.1 Apple clang version 15.0.0 (clang-1500.1.0.2.5)Thanks
Mark