cryptian
cryptian copied to clipboard
Build fails on Node.js v16 with error: ‘remove_cv_t’ is not a member of ‘std’;
Performing npm install on Node.js v16 fails due to compilation errors:
npm ERR! In file included from /home/jimbo/.cache/node-gyp/16.1.0/include/node/v8.h:30,
npm ERR! from /home/jimbo/.cache/node-gyp/16.1.0/include/node/node.h:63,
npm ERR! from ../../nan/nan.h:56,
npm ERR! from ../addon/src/node/algorithm.h:5,
npm ERR! from ../addon/src/node/cryptian.h:3,
npm ERR! from ../addon/src/node/cryptian.cc:2:
npm ERR! /home/jimbo/.cache/node-gyp/16.1.0/include/node/v8-internal.h: In function ‘void v8::internal::PerformCastCheck(T*)’:
npm ERR! /home/jimbo/.cache/node-gyp/16.1.0/include/node/v8-internal.h:452:38: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
npm ERR! 452 | !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
npm ERR! | ^~~~~~~~~~~
npm ERR! | remove_cv
npm ERR! /home/jimbo/.cache/node-gyp/16.1.0/include/node/v8-internal.h:452:38: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
npm ERR! 452 | !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
npm ERR! | ^~~~~~~~~~~
npm ERR! | remove_cv
npm ERR! /home/jimbo/.cache/node-gyp/16.1.0/include/node/v8-internal.h:452:50: error: template argument 2 is invalid
npm ERR! 452 | !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
npm ERR! | ^
npm ERR! /home/jimbo/.cache/node-gyp/16.1.0/include/node/v8-internal.h:452:63: error: ‘::Perform’ has not been declared
npm ERR! 452 | !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
npm ERR! | ^~~~~~~
npm ERR! In file included from ../../nan/nan.h:56,
npm ERR! from ../addon/src/node/algorithm.h:5,
npm ERR! from ../addon/src/node/cryptian.h:3,
npm ERR! from ../addon/src/node/cryptian.cc:2:
npm ERR! ../addon/src/node/cryptian.cc: At global scope:
npm ERR! /home/jimbo/.cache/node-gyp/16.1.0/include/node/node.h:806:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void
(*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
npm ERR! 806 | (node::addon_register_func) (regfunc), \
npm ERR! | ^
npm ERR! /home/jimbo/.cache/node-gyp/16.1.0/include/node/node.h:840:3: note: in expansion of macro ‘NODE_MODULE_X’
npm ERR! 840 | NODE_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage)
npm ERR! | ^~~~~~~~~~~~~
npm ERR! ../addon/src/node/cryptian.cc:86:1: note: in expansion of macro ‘NODE_MODULE’
npm ERR! 86 | NODE_MODULE(cryptian, Init)
npm ERR! | ^~~~~~~~~~~
npm ERR! make: *** [cryptian.target.mk:141: Release/obj.target/cryptian/addon/src/node/cryptian.o] Error 1
Workaround: downgrade to Node.js v14 or earlier.