cryptian icon indicating copy to clipboard operation
cryptian copied to clipboard

Build fails on Node.js v16 with error: ‘remove_cv_t’ is not a member of ‘std’;

Open jimbojw opened this issue 4 years ago • 0 comments

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.

jimbojw avatar May 10 '21 11:05 jimbojw