fivdi / epoll

A low-level Node.js binding for the Linux epoll API
MIT License
84 stars 13 forks source link

Failure to install epoll #46

Closed alexiri closed 2 years ago

alexiri commented 2 years ago

I'm trying to install onoff on a Raspberry Pi 3 and it's failing due to an epoll error, apparently. The OS is DietPi, which is based on Debian 11 bullseye. It's a freshly-installed system, the Node version is v16.14.2 and npm is v8.7.0.

Issue #44 seems similar, but this doesn't seem to be a Python issue. In the debug logs below you can see it finds Python 3.9.2. Any idea what's wrong here? Thanks a lot in advance!

$ npm install onoff --verbose
npm verb cli /usr/bin/node /usr/bin/npm
npm info using npm@8.7.0
npm info using node@v16.14.2
npm timing npm:load:whichnode Completed in 1ms
npm timing config:load:defaults Completed in 10ms
npm timing config:load:file:/usr/lib/node_modules/npm/npmrc Completed in 7ms
npm timing config:load:builtin Completed in 9ms
npm timing config:load:cli Completed in 14ms
npm timing config:load:env Completed in 2ms
npm timing config:load:file:/home/dietpi/MagicMirror/modules/MMM-ScreenControl/.npmrc Completed in 1ms
npm timing config:load:project Completed in 21ms
npm timing config:load:file:/home/dietpi/.npmrc Completed in 0ms
npm timing config:load:user Completed in 3ms
npm timing config:load:file:/usr/etc/npmrc Completed in 1ms
npm timing config:load:global Completed in 1ms
npm timing config:load:validate Completed in 1ms
npm timing config:load:credentials Completed in 4ms
npm timing config:load:setEnvs Completed in 5ms
npm timing config:load Completed in 77ms
npm timing npm:load:configload Completed in 78ms
npm timing npm:load:mkdirpcache Completed in 10ms
npm timing npm:load:mkdirplogs Completed in 2ms
npm verb title npm install
npm verb argv "install" "--loglevel" "verbose"
npm timing npm:load:setTitle Completed in 8ms
npm timing config:load:flatten Completed in 19ms
npm timing npm:load:display Completed in 68ms
npm verb logfile logs-max:10 dir:/home/dietpi/.npm/_logs
npm verb logfile /home/dietpi/.npm/_logs/2022-04-24T14_27_50_634Z-debug-0.log
npm timing npm:load:logFile Completed in 40ms
npm timing npm:load:timers Completed in 1ms
npm timing npm:load:configScope Completed in 1ms
npm timing npm:load Completed in 223ms
npm timing arborist:ctor Completed in 5ms
npm timing arborist:ctor Completed in 1ms
npm timing idealTree:init Completed in 91ms
npm timing idealTree:userRequests Completed in 1ms
npm http fetch GET 200 https://registry.npmjs.org/cron 1724ms (cache revalidated)
npm http fetch GET 200 https://registry.npmjs.org/onoff 824ms (cache revalidated)
npm http fetch GET 200 https://registry.npmjs.org/moment-timezone 168ms (cache revalidated)
npm http fetch GET 200 https://registry.npmjs.org/epoll 879ms (cache revalidated)
npm timing idealTree:#root Completed in 3688ms
npm http fetch GET 200 https://registry.npmjs.org/moment 158ms (cache revalidated)
npm timing idealTree:node_modules/cron Completed in 213ms
npm timing idealTree:node_modules/moment-timezone Completed in 33ms
npm timing idealTree:node_modules/moment Completed in 1ms
npm http fetch GET 200 https://registry.npmjs.org/nan 311ms (cache revalidated)
npm http fetch GET 200 https://registry.npmjs.org/bindings 407ms (cache revalidated)
npm timing idealTree:node_modules/onoff Completed in 465ms
npm timing idealTree:node_modules/epoll Completed in 148ms
npm timing idealTree:node_modules/bindings Completed in 1ms
npm timing idealTree:node_modules/nan Completed in 1ms
npm timing idealTree:buildDeps Completed in 4595ms
npm timing idealTree:fixDepFlags Completed in 30ms
npm timing idealTree Completed in 4755ms
npm timing reify:loadTrees Completed in 4765ms
npm timing reify:diffTrees Completed in 32ms
npm timing reify:retireShallow Completed in 22ms
npm timing reify:createSparse Completed in 63ms
npm timing reify:loadBundles Completed in 0ms
npm http fetch POST 200 https://registry.npmjs.org/-/npm/v1/security/advisories/bulk 1102ms
npm timing auditReport:getReport Completed in 1142ms
npm timing auditReport:init Completed in 0ms
npm timing reify:audit Completed in 1157ms
npm timing reifyNode:node_modules/bindings Completed in 1209ms
npm timing reifyNode:node_modules/epoll Completed in 1655ms
npm timing reifyNode:node_modules/cron Completed in 1663ms
npm timing reifyNode:node_modules/onoff Completed in 1703ms
npm timing reifyNode:node_modules/nan Completed in 1849ms
npm timing reifyNode:node_modules/moment-timezone Completed in 1909ms
npm timing reifyNode:node_modules/moment Completed in 3209ms
npm timing reify:unpack Completed in 3220ms
npm timing reify:unretire Completed in 1ms
npm timing build:queue Completed in 9ms
npm info run epoll@1.0.2 install node_modules/epoll node-gyp rebuild
npm info run epoll@1.0.2 install { code: 1, signal: null }
npm timing reify:rollback:createSparse Completed in 551ms
npm timing reify:rollback:retireShallow Completed in 0ms
npm timing command:install Completed in 19013ms
npm verb stack Error: command failed
npm verb stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:63:27)
npm verb stack     at ChildProcess.emit (node:events:526:28)
npm verb stack     at maybeClose (node:internal/child_process:1092:16)
npm verb stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)
npm verb pkgid epoll@1.0.2
npm verb cwd /home/dietpi/MagicMirror/modules/MMM-ScreenControl
npm verb Linux 5.15.32-v7+
npm verb node v16.14.2
npm verb npm  v8.7.0
npm ERR! code 1
npm ERR! path /home/dietpi/MagicMirror/modules/MMM-ScreenControl/node_modules/epoll
npm ERR! command failed
npm ERR! command sh -c node-gyp rebuild
npm ERR! make: Entering directory '/home/dietpi/MagicMirror/modules/MMM-ScreenControl/node_modules/epoll/build'
npm ERR!   g++ -o Release/obj.target/epoll/src/epoll.o ../src/epoll.cc '-DNODE_GYP_MODULE_NAME=epoll' '-DUSING_UV_SHARED=1' '-DUSING_V8_SHARED=1' '-DV8_DEPRECATION_WARNINGS=1' '-DV8_DEPRECATION_WARNINGS' '-DV8_IMMINENT_DEPRECATION_WARNINGS' '-D_GLIBCXX_USE_CXX11_ABI=1' '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DBUILDING_NODE_EXTENSION' -I/home/dietpi/.cache/node-gyp/16.14.2/include/node -I/home/dietpi/.cache/node-gyp/16.14.2/src -I/home/dietpi/.cache/node-gyp/16.14.2/deps/openssl/config -I/home/dietpi/.cache/node-gyp/16.14.2/deps/openssl/openssl/include -I/home/dietpi/.cache/node-gyp/16.14.2/deps/uv/include -I/home/dietpi/.cache/node-gyp/16.14.2/deps/zlib -I/home/dietpi/.cache/node-gyp/16.14.2/deps/v8/include -I../../nan  -fPIC -pthread -Wall -Wextra -Wno-unused-parameter -Wno-unused-local-typedefs -O3 -fno-omit-frame-pointer -fno-rtti -fno-exceptions -std=gnu++14 -MMD -MF ./Release/.deps/Release/obj.target/epoll/src/epoll.o.d.raw   -c
npm ERR! make: Leaving directory '/home/dietpi/MagicMirror/modules/MMM-ScreenControl/node_modules/epoll/build'
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp verb cli [
npm ERR! gyp verb cli   '/usr/bin/node',
npm ERR! gyp verb cli   '/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js',
npm ERR! gyp verb cli   'rebuild'
npm ERR! gyp verb cli ]
npm ERR! gyp info using node-gyp@9.0.0
npm ERR! gyp info using node@16.14.2 | linux | arm
npm ERR! gyp verb command rebuild []
npm ERR! gyp verb command clean []
npm ERR! gyp verb clean removing "build" directory
npm ERR! gyp verb command configure []
npm ERR! gyp verb find Python Python is not set from command line or npm configuration
npm ERR! gyp verb find Python Python is not set from environment variable PYTHON
npm ERR! gyp verb find Python checking if "python3" can be used
npm ERR! gyp verb find Python - executing "python3" to get executable path
npm ERR! gyp verb find Python - executable path is "/usr/bin/python3"
npm ERR! gyp verb find Python - executing "/usr/bin/python3" to get version
npm ERR! gyp verb find Python - version is "3.9.2"
npm ERR! gyp info find Python using Python version 3.9.2 found at "/usr/bin/python3"
npm ERR! gyp verb get node dir no --target version specified, falling back to host node version: 16.14.2
npm ERR! gyp verb command install [ '16.14.2' ]
npm ERR! gyp verb install input version string "16.14.2"
npm ERR! gyp verb install installing version: 16.14.2
npm ERR! gyp verb install --ensure was passed, so won't reinstall if already installed
npm ERR! gyp verb install version is already installed, need to check "installVersion"
npm ERR! gyp verb got "installVersion" 9
npm ERR! gyp verb needs "installVersion" 9
npm ERR! gyp verb install version is good
npm ERR! gyp verb get node dir target node version installed: 16.14.2
npm ERR! gyp verb build dir attempting to create "build" dir: /home/dietpi/MagicMirror/modules/MMM-ScreenControl/node_modules/epoll/build
npm ERR! gyp verb build dir "build" dir needed to be created? Yes
npm ERR! gyp verb build/config.gypi creating config file
npm ERR! gyp verb build/config.gypi writing out config file: /home/dietpi/MagicMirror/modules/MMM-ScreenControl/node_modules/epoll/build/config.gypi
npm ERR! gyp verb config.gypi checking for gypi file: /home/dietpi/MagicMirror/modules/MMM-ScreenControl/node_modules/epoll/config.gypi
npm ERR! gyp verb common.gypi checking for gypi file: /home/dietpi/MagicMirror/modules/MMM-ScreenControl/node_modules/epoll/common.gypi
npm ERR! gyp verb gyp gyp format was not specified; forcing "make"
npm ERR! gyp info spawn /usr/bin/python3
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args   '/usr/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   '/home/dietpi/MagicMirror/modules/MMM-ScreenControl/node_modules/epoll/build/config.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/home/dietpi/.cache/node-gyp/16.14.2/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=/home/dietpi/.cache/node-gyp/16.14.2',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/home/dietpi/.cache/node-gyp/16.14.2/<(target_arch)/node.lib',
npm ERR! gyp info spawn args   '-Dmodule_root_dir=/home/dietpi/MagicMirror/modules/MMM-ScreenControl/node_modules/epoll',
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 verb command build []
npm ERR! gyp verb build type Release
npm ERR! gyp verb architecture arm
npm ERR! gyp verb node dev dir /home/dietpi/.cache/node-gyp/16.14.2
npm ERR! gyp verb `which` succeeded for `make` /usr/bin/make
npm ERR! gyp info spawn make
npm ERR! gyp info spawn args [ 'V=1', 'BUILDTYPE=Release', '-C', 'build' ]
npm ERR! In file included from ../../nan/nan_converters.h:67,
npm ERR!                  from ../../nan/nan.h:202,
npm ERR!                  from ../src/epoll.cc:15:
npm ERR! ../../nan/nan_converters_43_inl.h: In static member function ‘static Nan::imp::ToFactoryBase<v8::Boolean>::return_t Nan::imp::ToFactory<v8::Boolean>::convert(v8::Local<v8::Value>)’:
npm ERR! ../../nan/nan_converters_43_inl.h:18:67: error: cannot convert ‘v8::Local<v8::Context>’ to ‘v8::Isolate*’
npm ERR!    18 |       val->To ## TYPE(v8::Isolate::GetCurrent()->GetCurrentContext())          \
npm ERR!       |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
npm ERR!       |                                                                   |
npm ERR!       |                                                                   v8::Local<v8::Context>
npm ERR! ../../nan/nan_converters_43_inl.h:22:1: note: in expansion of macro ‘X’
npm ERR!    22 | X(Boolean)
npm ERR!       | ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3086:37: note:   initializing argument 1 of ‘v8::Local<v8::Boolean> v8::Value::ToBoolean(v8::Isolate*) const’
npm ERR!  3086 |   Local<Boolean> ToBoolean(Isolate* isolate) const;
npm ERR!       |                            ~~~~~~~~~^~~~~~~
npm ERR! In file included from ../../nan/nan_converters.h:67,
npm ERR!                  from ../../nan/nan.h:202,
npm ERR!                  from ../src/epoll.cc:15:
npm ERR! ../../nan/nan_converters_43_inl.h: In static member function ‘static Nan::imp::ValueFactoryBase<bool>::return_t Nan::imp::ToFactory<bool>::convert(v8::Local<v8::Value>)’:
npm ERR! ../../nan/nan_converters_43_inl.h:37:55: error: cannot convert ‘v8::Local<v8::Context>’ to ‘v8::Isolate*’
npm ERR!    37 |   return val->NAME ## Value(isolate->GetCurrentContext());                     \
npm ERR!       |                             ~~~~~~~~~~~~~~~~~~~~~~~~~~^~
npm ERR!       |                                                       |
npm ERR!       |                                                       v8::Local<v8::Context>
npm ERR! ../../nan/nan_converters_43_inl.h:40:1: note: in expansion of macro ‘X’
npm ERR!    40 | X(bool, Boolean)
npm ERR!       | ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3096:30: note:   initializing argument 1 of ‘bool v8::Value::BooleanValue(v8::Isolate*) const’
npm ERR!  3096 |   bool BooleanValue(Isolate* isolate) const;
npm ERR!       |                     ~~~~~~~~~^~~~~~~
npm ERR! In file included from ../../nan/nan_new.h:189,
npm ERR!                  from ../../nan/nan.h:203,
npm ERR!                  from ../src/epoll.cc:15:
npm ERR! ../../nan/nan_implementation_12_inl.h: In static member function ‘static Nan::imp::FactoryBase<v8::Function>::return_t Nan::imp::Factory<v8::Function>::New(Nan::FunctionCallback, v8::Local<v8::Value>)’:
npm ERR! ../../nan/nan_implementation_12_inl.h:103:42: error: cannot convert ‘v8::Isolate*’ to ‘v8::Local<v8::Context>’
npm ERR!   103 |   return scope.Escape(v8::Function::New( isolate
npm ERR!       |                                          ^~~~~~~
npm ERR!       |                                          |
npm ERR!       |                                          v8::Isolate*
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4754:22: note:   initializing argument 1 of ‘static v8::MaybeLocal<v8::Function> v8::Function::New(v8::Local<v8::Context>, v8::FunctionCallback, v8::Local<v8::Value>, int, v8::ConstructorBehavior, v8::SideEffectType)’
npm ERR!  4754 |       Local<Context> context, FunctionCallback callback,
npm ERR!       |       ~~~~~~~~~~~~~~~^~~~~~~
npm ERR! In file included from ../../nan/nan_new.h:189,
npm ERR!                  from ../../nan/nan.h:203,
npm ERR!                  from ../src/epoll.cc:15:
npm ERR! ../../nan/nan_implementation_12_inl.h: In static member function ‘static Nan::imp::FactoryBase<v8::StringObject>::return_t Nan::imp::Factory<v8::StringObject>::New(v8::Local<v8::String>)’:
npm ERR! ../../nan/nan_implementation_12_inl.h:337:37: error: no matching function for call to ‘v8::StringObject::New(v8::Local<v8::String>&)’
npm ERR!   337 |   return v8::StringObject::New(value).As<v8::StringObject>();
npm ERR!       |                                     ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:6196:23: note: candidate: ‘static v8::Local<v8::Value> v8::StringObject::New(v8::Isolate*, v8::Local<v8::String>)’
npm ERR!  6196 |   static Local<Value> New(Isolate* isolate, Local<String> value);
npm ERR!       |                       ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:6196:23: note:   candidate expects 2 arguments, 1 provided
npm ERR! In file included from ../../nan/nan_new.h:189,
npm ERR!                  from ../../nan/nan.h:203,
npm ERR!                  from ../src/epoll.cc:15:
npm ERR! ../../nan/nan_implementation_12_inl.h:337:58: error: expected primary-expression before ‘>’ token
npm ERR!   337 |   return v8::StringObject::New(value).As<v8::StringObject>();
npm ERR!       |                                                          ^
npm ERR! ../../nan/nan_implementation_12_inl.h:337:60: error: expected primary-expression before ‘)’ token
npm ERR!   337 |   return v8::StringObject::New(value).As<v8::StringObject>();
npm ERR!       |                                                            ^
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’:
npm ERR! ../../nan/nan.h:840:60: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
npm ERR!   840 |         v8::Isolate::GetCurrent(), target, func, argc, argv);
npm ERR!       |                                                            ^
npm ERR! In file included from ../src/epoll.cc:12:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/node.h:184:50: note: declared here
npm ERR!   184 |                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
npm ERR!       |                                                  ^~~~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/node.h:101:42: note: in definition of macro ‘NODE_DEPRECATED’
npm ERR!   101 |     __attribute__((deprecated(message))) declarator
npm ERR!       |                                          ^~~~~~~~~~
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)’:
npm ERR! ../../nan/nan.h:855:62: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::String>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
npm ERR!   855 |         v8::Isolate::GetCurrent(), target, symbol, argc, argv);
npm ERR!       |                                                              ^
npm ERR! In file included from ../src/epoll.cc:12:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/node.h:177:50: note: declared here
npm ERR!   177 |                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
npm ERR!       |                                                  ^~~~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/node.h:101:42: note: in definition of macro ‘NODE_DEPRECATED’
npm ERR!   101 |     __attribute__((deprecated(message))) declarator
npm ERR!       |                                          ^~~~~~~~~~
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In function ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)’:
npm ERR! ../../nan/nan.h:870:62: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, const char*, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
npm ERR!   870 |         v8::Isolate::GetCurrent(), target, method, argc, argv);
npm ERR!       |                                                              ^
npm ERR! In file included from ../src/epoll.cc:12:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/node.h:170:50: note: declared here
npm ERR!   170 |                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
npm ERR!       |                                                  ^~~~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/node.h:101:42: note: in definition of macro ‘NODE_DEPRECATED’
npm ERR!   101 |     __attribute__((deprecated(message))) declarator
npm ERR!       |                                          ^~~~~~~~~~
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In constructor ‘Nan::Utf8String::Utf8String(v8::Local<v8::Value>)’:
npm ERR! ../../nan/nan.h:916:53: error: no matching function for call to ‘v8::Value::ToString()’
npm ERR!   916 |       v8::Local<v8::String> string = from->ToString();
npm ERR!       |                                                     ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3048:44: note: candidate: ‘v8::MaybeLocal<v8::String> v8::Value::ToString(v8::Local<v8::Context>) const’
npm ERR!  3048 |   V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
npm ERR!       |                                            ^~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3048:44: note:   candidate expects 1 argument, 0 provided
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h:926:37: error: cannot convert ‘char*’ to ‘v8::Isolate*’
npm ERR!   926 |         length_ = string->WriteUtf8(str_, static_cast<int>(len), 0, flags);
npm ERR!       |                                     ^~~~
npm ERR!       |                                     |
npm ERR!       |                                     char*
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3277:26: note:   initializing argument 1 of ‘int v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const’
npm ERR!  3277 |   int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,
npm ERR!       |                 ~~~~~~~~~^~~~~~~
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In member function ‘v8::Local<v8::Value> Nan::Callback::Call_(v8::Isolate*, v8::Local<v8::Object>, int, v8::Local<v8::Value>*) const’:
npm ERR! ../../nan/nan.h:1484:5: warning: ‘v8::Local<v8::Value> node::MakeCallback(v8::Isolate*, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*)’ is deprecated: Use MakeCallback(..., async_context) [-Wdeprecated-declarations]
npm ERR!  1484 |     ));
npm ERR!       |     ^
npm ERR! In file included from ../src/epoll.cc:12:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/node.h:184:50: note: declared here
npm ERR!   184 |                 NODE_EXTERN v8::Local<v8::Value> MakeCallback(
npm ERR!       |                                                  ^~~~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/node.h:101:42: note: in definition of macro ‘NODE_DEPRECATED’
npm ERR!   101 |     __attribute__((deprecated(message))) declarator
npm ERR!       |                                          ^~~~~~~~~~
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In member function ‘void Nan::AsyncWorker::SaveToPersistent(const char*, const v8::Local<v8::Value>&)’:
npm ERR! ../../nan/nan.h:1538:64: error: no matching function for call to ‘v8::Object::Set(v8::Local<v8::String>, const v8::Local<v8::Value>&)’
npm ERR!  1538 |     New(persistentHandle)->Set(New(key).ToLocalChecked(), value);
npm ERR!       |                                                                ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3961:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)’
npm ERR!  3961 |   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,
npm ERR!       |                                     ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3961:37: note:   candidate expects 3 arguments, 2 provided
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3964:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, uint32_t, v8::Local<v8::Value>)’
npm ERR!  3964 |   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,
npm ERR!       |                                     ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3964:37: note:   candidate expects 3 arguments, 2 provided
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In member function ‘void Nan::AsyncWorker::SaveToPersistent(const v8::Local<v8::String>&, const v8::Local<v8::Value>&)’:
npm ERR! ../../nan/nan.h:1544:42: error: no matching function for call to ‘v8::Object::Set(const v8::Local<v8::String>&, const v8::Local<v8::Value>&)’
npm ERR!  1544 |     New(persistentHandle)->Set(key, value);
npm ERR!       |                                          ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3961:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)’
npm ERR!  3961 |   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,
npm ERR!       |                                     ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3961:37: note:   candidate expects 3 arguments, 2 provided
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3964:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, uint32_t, v8::Local<v8::Value>)’
npm ERR!  3964 |   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,
npm ERR!       |                                     ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3964:37: note:   candidate expects 3 arguments, 2 provided
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In member function ‘void Nan::AsyncWorker::SaveToPersistent(uint32_t, const v8::Local<v8::Value>&)’:
npm ERR! ../../nan/nan.h:1550:44: error: no matching function for call to ‘v8::Object::Set(uint32_t&, const v8::Local<v8::Value>&)’
npm ERR!  1550 |     New(persistentHandle)->Set(index, value);
npm ERR!       |                                            ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3961:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, v8::Local<v8::Value>, v8::Local<v8::Value>)’
npm ERR!  3961 |   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context,
npm ERR!       |                                     ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3961:37: note:   candidate expects 3 arguments, 2 provided
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3964:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Set(v8::Local<v8::Context>, uint32_t, v8::Local<v8::Value>)’
npm ERR!  3964 |   V8_WARN_UNUSED_RESULT Maybe<bool> Set(Local<Context> context, uint32_t index,
npm ERR!       |                                     ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3964:37: note:   candidate expects 3 arguments, 2 provided
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In member function ‘v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(const char*) const’:
npm ERR! ../../nan/nan.h:1556:61: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>)’
npm ERR!  1556 |         New(persistentHandle)->Get(New(key).ToLocalChecked()));
npm ERR!       |                                                             ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4007:43: note: candidate: ‘v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)’
npm ERR!  4007 |   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
npm ERR!       |                                           ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4007:43: note:   candidate expects 2 arguments, 1 provided
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4010:43: note: candidate: ‘v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)’
npm ERR!  4010 |   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
npm ERR!       |                                           ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4010:43: note:   candidate expects 2 arguments, 1 provided
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In member function ‘v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(const v8::Local<v8::String>&) const’:
npm ERR! ../../nan/nan.h:1562:55: error: no matching function for call to ‘v8::Object::Get(const v8::Local<v8::String>&)’
npm ERR!  1562 |     return scope.Escape(New(persistentHandle)->Get(key));
npm ERR!       |                                                       ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4007:43: note: candidate: ‘v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)’
npm ERR!  4007 |   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
npm ERR!       |                                           ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4007:43: note:   candidate expects 2 arguments, 1 provided
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4010:43: note: candidate: ‘v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)’
npm ERR!  4010 |   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
npm ERR!       |                                           ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4010:43: note:   candidate expects 2 arguments, 1 provided
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In member function ‘v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(uint32_t) const’:
npm ERR! ../../nan/nan.h:1567:57: error: no matching function for call to ‘v8::Object::Get(uint32_t&)’
npm ERR!  1567 |     return scope.Escape(New(persistentHandle)->Get(index));
npm ERR!       |                                                         ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4007:43: note: candidate: ‘v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)’
npm ERR!  4007 |   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
npm ERR!       |                                           ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4007:43: note:   candidate expects 2 arguments, 1 provided
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4010:43: note: candidate: ‘v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)’
npm ERR!  4010 |   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
npm ERR!       |                                           ^~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:4010:43: note:   candidate expects 2 arguments, 1 provided
npm ERR! In file included from ../src/epoll.cc:15:
npm ERR! ../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
npm ERR! ../../nan/nan.h:1875:7: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
npm ERR!  1875 |     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
npm ERR!       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
npm ERR! In file included from /usr/include/c++/10/cassert:44,
npm ERR!                  from /home/dietpi/.cache/node-gyp/16.14.2/include/node/node_object_wrap.h:26,
npm ERR!                  from ../src/epoll.cc:13:
npm ERR! ../../nan/nan_object_wrap.h: In destructor ‘virtual Nan::ObjectWrap::~ObjectWrap()’:
npm ERR! ../../nan/nan_object_wrap.h:24:25: error: ‘class Nan::Persistent<v8::Object>’ has no member named ‘IsNearDeath’
npm ERR!    24 |     assert(persistent().IsNearDeath());
npm ERR!       |                         ^~~~~~~~~~~
npm ERR! In file included from ../../nan/nan.h:2365,
npm ERR!                  from ../src/epoll.cc:15:
npm ERR! ../../nan/nan_object_wrap.h: In member function ‘void Nan::ObjectWrap::MakeWeak()’:
npm ERR! ../../nan/nan_object_wrap.h:67:18: error: ‘class Nan::Persistent<v8::Object>’ has no member named ‘MarkIndependent’
npm ERR!    67 |     persistent().MarkIndependent();
npm ERR!       |                  ^~~~~~~~~~~~~~~
npm ERR! In file included from /usr/include/c++/10/cassert:44,
npm ERR!                  from /home/dietpi/.cache/node-gyp/16.14.2/include/node/node_object_wrap.h:26,
npm ERR!                  from ../src/epoll.cc:13:
npm ERR! ../../nan/nan_object_wrap.h: In static member function ‘static void Nan::ObjectWrap::WeakCallback(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’:
npm ERR! ../../nan/nan_object_wrap.h:124:26: error: ‘class Nan::Persistent<v8::Object>’ has no member named ‘IsNearDeath’
npm ERR!   124 |     assert(wrap->handle_.IsNearDeath());
npm ERR!       |                          ^~~~~~~~~~~
npm ERR! ../src/epoll.cc: In static member function ‘static void Epoll::Init(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’:
npm ERR! ../src/epoll.cc:175:39: error: no matching function for call to ‘v8::FunctionTemplate::GetFunction()’
npm ERR!   175 |   constructor.Reset(ctor->GetFunction());
npm ERR!       |                                       ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:6802:46: note: candidate: ‘v8::MaybeLocal<v8::Function> v8::FunctionTemplate::GetFunction(v8::Local<v8::Context>)’
npm ERR!  6802 |   V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
npm ERR!       |                                              ^~~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:6802:46: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/epoll.cc:177:23: error: no matching function for call to ‘v8::FunctionTemplate::GetFunction()’
npm ERR!   177 |     ctor->GetFunction());
npm ERR!       |                       ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:6802:46: note: candidate: ‘v8::MaybeLocal<v8::Function> v8::FunctionTemplate::GetFunction(v8::Local<v8::Context>)’
npm ERR!  6802 |   V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
npm ERR!       |                                              ^~~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:6802:46: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/epoll.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE Epoll::Add(Nan::NAN_METHOD_ARGS_TYPE)’:
npm ERR! ../src/epoll.cc:210:44: error: no matching function for call to ‘v8::Value::Int32Value()’
npm ERR!   210 |   int err = epoll->Add(info[0]->Int32Value(), info[1]->Int32Value());
npm ERR!       |                                            ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3107:40: note: candidate: ‘v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const’
npm ERR!  3107 |   V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
npm ERR!       |                                        ^~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3107:40: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/epoll.cc:210:67: error: no matching function for call to ‘v8::Value::Int32Value()’
npm ERR!   210 |   int err = epoll->Add(info[0]->Int32Value(), info[1]->Int32Value());
npm ERR!       |                                                                   ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3107:40: note: candidate: ‘v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const’
npm ERR!  3107 |   V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
npm ERR!       |                                        ^~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3107:40: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/epoll.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE Epoll::Modify(Nan::NAN_METHOD_ARGS_TYPE)’:
npm ERR! ../src/epoll.cc:230:47: error: no matching function for call to ‘v8::Value::Int32Value()’
npm ERR!   230 |   int err = epoll->Modify(info[0]->Int32Value(), info[1]->Int32Value());
npm ERR!       |                                               ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3107:40: note: candidate: ‘v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const’
npm ERR!  3107 |   V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
npm ERR!       |                                        ^~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3107:40: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/epoll.cc:230:70: error: no matching function for call to ‘v8::Value::Int32Value()’
npm ERR!   230 |   int err = epoll->Modify(info[0]->Int32Value(), info[1]->Int32Value());
npm ERR!       |                                                                      ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3107:40: note: candidate: ‘v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const’
npm ERR!  3107 |   V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
npm ERR!       |                                        ^~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3107:40: note:   candidate expects 1 argument, 0 provided
npm ERR! ../src/epoll.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE Epoll::Remove(Nan::NAN_METHOD_ARGS_TYPE)’:
npm ERR! ../src/epoll.cc:247:47: error: no matching function for call to ‘v8::Value::Int32Value()’
npm ERR!   247 |   int err = epoll->Remove(info[0]->Int32Value());
npm ERR!       |                                               ^
npm ERR! In file included from ../src/epoll.cc:11:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3107:40: note: candidate: ‘v8::Maybe<int> v8::Value::Int32Value(v8::Local<v8::Context>) const’
npm ERR!  3107 |   V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
npm ERR!       |                                        ^~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/v8.h:3107:40: note:   candidate expects 1 argument, 0 provided
npm ERR! In file included from ../src/epoll.cc:12:
npm ERR! ../src/epoll.cc: At global scope:
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/node.h:842:7: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)’ {aka ‘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!   842 |       (node::addon_register_func) (regfunc),                          \
npm ERR!       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
npm ERR! /home/dietpi/.cache/node-gyp/16.14.2/include/node/node.h:876:3: note: in expansion of macro ‘NODE_MODULE_X’
npm ERR!   876 |   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
npm ERR!       |   ^~~~~~~~~~~~~
npm ERR! ../src/epoll.cc:381:1: note: in expansion of macro ‘NODE_MODULE’
npm ERR!   381 | NODE_MODULE(epoll, Epoll::Init)
npm ERR!       | ^~~~~~~~~~~
npm ERR! make: *** [epoll.target.mk:113: Release/obj.target/epoll/src/epoll.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 (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:526:28)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Linux 5.15.32-v7+
npm ERR! gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd /home/dietpi/MagicMirror/modules/MMM-ScreenControl/node_modules/epoll
npm ERR! gyp ERR! node -v v16.14.2
npm ERR! gyp ERR! node-gyp -v v9.0.0
npm ERR! gyp ERR! not ok
npm verb exit 1
npm timing npm Completed in 19893ms
npm verb unfinished npm timer reify 1650810471387
npm verb unfinished npm timer reify:build 1650810479675
npm verb unfinished npm timer build 1650810479678
npm verb unfinished npm timer build:deps 1650810479679
npm verb unfinished npm timer build:run:install 1650810479691
npm verb unfinished npm timer build:run:install:node_modules/epoll 1650810479693
npm verb code 1
alexiri commented 2 years ago

And of course, just after posting that I noticed that it was trying to install epoll@1.0.2, which is pretty old. It's strange, because my package.json had this:

{
  "dependencies": {
    "cron": "^1.3.0",
    "onoff": "^1.1.9"
  }
}

I deleted those dependencies, reran npm install --save cron onoff and this time it worked and my package.json now looks like this:

{
  "dependencies": {
    "cron": "^1.8.2",
    "onoff": "^6.0.3"
  }
}