thomaschaaf / node-ftdi

FTDI bindings for Node.js
MIT License
45 stars 39 forks source link

Failed to build on Ubuntu 18.04.3 #35

Closed CassianoSF closed 4 years ago

CassianoSF commented 4 years ago

I cloned the repo and sudo ./install.sh it:

Detected OS:
linux (64bit)
Download FTDI Library
--2019-12-11 09:27:19--  http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx1.1.12.tar.gz
Resolving www.ftdichip.com (www.ftdichip.com)... 217.160.0.65
Connecting to www.ftdichip.com (www.ftdichip.com)|217.160.0.65|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx1.1.12.tar.gz [following]
--2019-12-11 09:27:22--  https://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx1.1.12.tar.gz
Connecting to www.ftdichip.com (www.ftdichip.com)|217.160.0.65|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 950540 (928K) [application/gzip]
Saving to: ‘libftd2xx1.1.12.tar.gz’

libftd2xx1.1.12.tar 100%[===================>] 928,26K   582KB/s    in 1,6s    

2019-12-11 09:27:24 (582 KB/s) - ‘libftd2xx1.1.12.tar.gz’ saved [950540/950540]

extract lib
'tmp/release/build/x86_64/libftd2xx.a' -> '/usr/local/lib/libftd2xx.a'
'tmp/release/build/x86_64/libftd2xx.so.1.1.12' -> '/usr/local/lib/libftd2xx.so.1.1.12'
'tmp/release/ftd2xx.h' -> '/usr/local/include/libftd2xx/ftd2xx.h'
'tmp/release/WinTypes.h' -> '/usr/local/include/libftd2xx/WinTypes.h'
'/usr/local/lib/libftd2xx.so' -> '/usr/local/lib/libftd2xx.so.1.1.12'

than I yarn add node-ftdi into my fresh new project and that is what happen:

yarn add v1.19.2
info No lockfile found.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
error /home/cassiano/dev/rvnexus-lite/node_modules/ftdi: Command failed.
Exit code: 1
Command: node-gyp rebuild
Arguments: 
Directory: /home/cassiano/dev/rvnexus-lite/node_modules/ftdi
Output:
gyp info it worked if it ends with ok
gyp info using node-gyp@5.0.5
gyp info using node@13.2.0 | linux | x64
gyp info find Python using Python version 2.7.15 found at "/usr/bin/python"
gyp info spawn /usr/bin/python
gyp info spawn args [
gyp info spawn args   '/home/cassiano/.asdf/installs/nodejs/13.2.0/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/cassiano/dev/rvnexus-lite/node_modules/ftdi/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/cassiano/.asdf/installs/nodejs/13.2.0/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/cassiano/.cache/node-gyp/13.2.0/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/cassiano/.cache/node-gyp/13.2.0',
gyp info spawn args   '-Dnode_gyp_dir=/home/cassiano/.asdf/installs/nodejs/13.2.0/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/home/cassiano/.cache/node-gyp/13.2.0/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/home/cassiano/dev/rvnexus-lite/node_modules/ftdi',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/cassiano/dev/rvnexus-lite/node_modules/ftdi/build'
  CXX(target) Release/obj.target/ftdi/src/ftdi_device.o
In file included from ../src/ftdi_device.cc:11:0:
../src/ftdi_device.h:74:28: error: ‘Handle’ has not been declared
     static void Initialize(Handle<Object> target);
                            ^~~~~~
../src/ftdi_device.h:74:34: error: expected ‘,’ or ‘...’ before ‘<’ token
     static void Initialize(Handle<Object> target);
                                  ^
In file included from ../src/ftdi_device.cc:12:0:
../src/ftdi_driver.h:14:21: error: variable or field ‘InitializeList’ declared void
 void InitializeList(Handle<Object> target);
                     ^~~~~~
../src/ftdi_driver.h:14:21: error: ‘Handle’ was not declared in this scope
../src/ftdi_driver.h:14:21: note: suggested alternative: ‘rand_r’
 void InitializeList(Handle<Object> target);
                     ^~~~~~
                     rand_r
../src/ftdi_driver.h:14:34: error: expected primary-expression before ‘>’ token
 void InitializeList(Handle<Object> target);
                                  ^
../src/ftdi_driver.h:14:36: error: ‘target’ was not declared in this scope
 void InitializeList(Handle<Object> target);
                                    ^~~~~~
../src/ftdi_driver.h:14:36: note: suggested alternative: ‘tzset’
 void InitializeList(Handle<Object> target);
                                    ^~~~~~
                                    tzset
../src/ftdi_device.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE ftdi_device::FtdiDevice::New(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/ftdi_device.cc:92:43: error: no matching function for call to ‘v8::Value::ToObject()’
     Local<Object> obj = info[0]->ToObject();
                                           ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2754:44: note: candidate: v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2754:44: note:   candidate expects 1 argument, 0 provided
../src/ftdi_device.cc:102:27: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
     if(obj->Has(locationId) && obj->Get(locationId)->Int32Value() != 0)
                           ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:102:51: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
     if(obj->Has(locationId) && obj->Get(locationId)->Int32Value() != 0)
                                                   ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:104:60: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
       object->connectParams.connectId = obj->Get(locationId)->Int32Value();
                                                            ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:107:28: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
     else if(obj->Has(serial) && obj->Get(serial)->ToString()->Length() > 0)
                            ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:107:48: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
     else if(obj->Has(serial) && obj->Get(serial)->ToString()->Length() > 0)
                                                ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:109:32: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
       ToCString(obj->Get(serial)->ToString(), &object->connectParams.connectString);
                                ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:112:33: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
     else if(obj->Has(description) && obj->Get(description)->ToString()->Length() > 0)
                                 ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:112:58: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
     else if(obj->Has(description) && obj->Get(description)->ToString()->Length() > 0)
                                                          ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:114:37: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
       ToCString(obj->Get(description)->ToString(), &object->connectParams.connectString);
                                     ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:117:27: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
     else if(obj->Has(index))
                           ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:119:55: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
       object->connectParams.connectId = obj->Get(index)->Int32Value();
                                                       ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:123:20: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
     if(obj->Has(vid))
                    ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:125:47: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
       object->connectParams.vid = obj->Get(vid)->Int32Value();
                                               ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:128:20: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
     if(obj->Has(pid))
                    ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:130:47: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
       object->connectParams.pid = obj->Get(pid)->Int32Value();
                                               ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:136:66: error: no matching function for call to ‘v8::Value::NumberValue()’
     object->connectParams.connectId = (int) info[0]->NumberValue();
                                                                  ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2773:39: note: candidate: v8::Maybe<double> v8::Value::NumberValue(v8::Local<v8::Context>) const
   V8_WARN_UNUSED_RESULT Maybe<double> NumberValue(Local<Context> context) const;
                                       ^~~~~~~~~~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2773:39: note:   candidate expects 1 argument, 0 provided
../src/ftdi_device.cc: In member function ‘virtual void ReadWorker::HandleOKCallback()’:
../src/ftdi_device.cc:191:123: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>)’
       Local<Function> bufferConstructor = Local<Function>::Cast(globalObj->Get(Nan::New<String>("Buffer").ToLocalChecked()));
                                                                                                                           ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:192:7: error: ‘Handle’ was not declared in this scope
       Handle<Value> constructorArgs[3] = { slowBuffer, Nan::New<Number>(baton->length), Nan::New<Number>(0) };
       ^~~~~~
../src/ftdi_device.cc:192:7: note: suggested alternative: ‘rand_r’
       Handle<Value> constructorArgs[3] = { slowBuffer, Nan::New<Number>(baton->length), Nan::New<Number>(0) };
       ^~~~~~
       rand_r
../src/ftdi_device.cc:192:19: error: expected primary-expression before ‘>’ token
       Handle<Value> constructorArgs[3] = { slowBuffer, Nan::New<Number>(baton->length), Nan::New<Number>(0) };
                   ^
../src/ftdi_device.cc:192:21: error: ‘constructorArgs’ was not declared in this scope
       Handle<Value> constructorArgs[3] = { slowBuffer, Nan::New<Number>(baton->length), Nan::New<Number>(0) };
                     ^~~~~~~~~~~~~~~
../src/ftdi_device.cc:205:29: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
       callback->Call(2, argv);
                             ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1740:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc: In member function ‘virtual void OpenWorker::HandleOKCallback()’:
../src/ftdi_device.cc:344:29: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
       callback->Call(1, argv);
                             ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1740:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE ftdi_device::FtdiDevice::Open(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/ftdi_device.cc:398:27: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
     callback->Call(1, argv);
                           ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1740:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc:405:53: error: no matching function for call to ‘v8::Value::ToObject()’
     device->ExtractDeviceSettings(info[0]->ToObject());
                                                     ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2754:44: note: candidate: v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2754:44: note:   candidate expects 1 argument, 0 provided
../src/ftdi_device.cc: In member function ‘FT_STATUS ftdi_device::FtdiDevice::OpenDevice()’:
../src/ftdi_device.cc:484:45: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
                 arg = (PVOID) connectParams.connectId;
                                             ^~~~~~~~~
../src/ftdi_device.cc: In member function ‘virtual void WriteWorker::HandleOKCallback()’:
../src/ftdi_device.cc:552:29: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
       callback->Call(1, argv);
                             ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1740:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE ftdi_device::FtdiDevice::Write(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/ftdi_device.cc:575:44: error: no matching function for call to ‘v8::Value::ToObject()’
   Local<Object> buffer = info[0]->ToObject();
                                            ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2754:44: note: candidate: v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2754:44: note:   candidate expects 1 argument, 0 provided
../src/ftdi_device.cc: In member function ‘virtual void CloseWorker::HandleOKCallback()’:
../src/ftdi_device.cc:651:29: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
       callback->Call(1, argv);
                             ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1740:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE ftdi_device::FtdiDevice::Close(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/ftdi_device.cc:681:29: warning: ‘v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const’ is deprecated [-Wdeprecated-declarations]
       callback->Call(1, argv);
                             ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1740:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc: In member function ‘void ftdi_device::FtdiDevice::ExtractDeviceSettings(v8::Local<v8::Object>)’:
../src/ftdi_device.cc:781:27: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
   if(options->Has(baudrate))
                           ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:783:50: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
     deviceParams.baudRate = options->Get(baudrate)->ToInt32()->Int32Value();
                                                  ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:785:27: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
   if(options->Has(databits))
                           ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:787:66: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
     deviceParams.wordLength = GetWordLength(options->Get(databits)->ToInt32()->Int32Value());
                                                                  ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:789:27: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
   if(options->Has(stopbits))
                           ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:791:62: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
     deviceParams.stopBits = GetStopBits(options->Get(stopbits)->ToInt32()->Int32Value());
                                                              ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:793:25: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
   if(options->Has(parity))
                         ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:796:34: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
     ToCString(options->Get(parity)->ToString(), &str);
                                  ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:800:27: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
   if(options->Has(flowctrl))
                           ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:803:36: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
     ToCString(options->Get(flowctrl)->ToString(), &str);
                                    ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:812:26: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
   if(options->Has(bitmode))
                          ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:814:50: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
       deviceParams.bitMode = options->Get(bitmode)->ToInt32()->Int32Value();
                                                  ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:820:44: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
   if(hasBitSettings && options->Has(bitmask))
                                            ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3629:37: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note: candidate: v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3635:37: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc:822:50: error: no matching function for call to ‘v8::Object::Get(v8::Local<v8::String>&)’
       deviceParams.bitMask = options->Get(bitmask)->ToInt32()->Int32Value();
                                                  ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3594:43: note:   candidate expects 2 arguments, 1 provided
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note: candidate: v8::MaybeLocal<v8::Value> v8::Object::Get(v8::Local<v8::Context>, uint32_t)
   V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
                                           ^~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:3597:43: note:   candidate expects 2 arguments, 1 provided
../src/ftdi_device.cc: In function ‘void ToCString(v8::Local<v8::String>, char**)’:
../src/ftdi_device.cc:900:35: error: no matching function for call to ‘v8::String::Utf8Length()’
   *ptr = new char[val->Utf8Length() + 1];
                                   ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2887:7: note: candidate: int v8::String::Utf8Length(v8::Isolate*) const
   int Utf8Length(Isolate* isolate) const;
       ^~~~~~~~~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2887:7: note:   candidate expects 1 argument, 0 provided
../src/ftdi_device.cc:903:63: error: no matching function for call to ‘v8::String::WriteOneByte(uint8_t*, int, int, int)’
   val->WriteOneByte(reinterpret_cast<uint8_t*>(*ptr), 0, -1, 0);
                                                               ^
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:63:0,
                 from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2944:7: note: candidate: int v8::String::WriteOneByte(v8::Isolate*, uint8_t*, int, int, int) const
   int WriteOneByte(Isolate* isolate, uint8_t* buffer, int start = 0,
       ^~~~~~~~~~~~
/home/cassiano/.cache/node-gyp/13.2.0/include/node/v8.h:2944:7: note:   no known conversion for argument 1 from ‘uint8_t* {aka unsigned char*}’ to ‘v8::Isolate*’
../src/ftdi_device.cc: At global scope:
../src/ftdi_device.cc:989:33: error: variable or field ‘Initialize’ declared void
 void FtdiDevice::Initialize(v8::Handle<v8::Object> target)
                                 ^~~~~~
../src/ftdi_device.cc:989:33: error: ‘Handle’ is not a member of ‘v8’
../src/ftdi_device.cc:989:50: error: expected primary-expression before ‘>’ token
 void FtdiDevice::Initialize(v8::Handle<v8::Object> target)
                                                  ^
../src/ftdi_device.cc:989:52: error: ‘target’ was not declared in this scope
 void FtdiDevice::Initialize(v8::Handle<v8::Object> target)
                                                    ^~~~~~
../src/ftdi_device.cc:989:52: note: suggested alternative: ‘tzset’
 void FtdiDevice::Initialize(v8::Handle<v8::Object> target)
                                                    ^~~~~~
                                                    tzset
../src/ftdi_device.cc:1006:18: error: variable or field ‘init’ declared void
   void init (v8::Handle<v8::Object> target)
                  ^~~~~~
../src/ftdi_device.cc:1006:18: error: ‘Handle’ is not a member of ‘v8’
../src/ftdi_device.cc:1006:35: error: expected primary-expression before ‘>’ token
   void init (v8::Handle<v8::Object> target)
                                   ^
../src/ftdi_device.cc:1006:37: error: ‘target’ was not declared in this scope
   void init (v8::Handle<v8::Object> target)
                                     ^~~~~~
../src/ftdi_device.cc:1006:37: note: suggested alternative: ‘tzset’
   void init (v8::Handle<v8::Object> target)
                                     ^~~~~~
                                     tzset
In file included from /home/cassiano/.cache/node-gyp/13.2.0/include/node/node_buffer.h:25:0,
                 from ../src/ftdi_device.cc:8:
../src/ftdi_device.cc:1014:19: error: ‘init’ was not declared in this scope
 NODE_MODULE(ftdi, init)
                   ^
/home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:610:36: note: in definition of macro ‘NODE_MODULE_X’
       (node::addon_register_func) (regfunc),                          \
                                    ^~~~~~~
../src/ftdi_device.cc:1014:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(ftdi, init)
 ^~~~~~~~~~~
../src/ftdi_device.cc:1014:19: note: suggested alternative: ‘int’
 NODE_MODULE(ftdi, init)
                   ^
/home/cassiano/.cache/node-gyp/13.2.0/include/node/node.h:610:36: note: in definition of macro ‘NODE_MODULE_X’
       (node::addon_register_func) (regfunc),                          \
                                    ^~~~~~~
../src/ftdi_device.cc:1014:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(ftdi, init)
 ^~~~~~~~~~~
ftdi.target.mk:116: recipe for target 'Release/obj.target/ftdi/src/ftdi_device.o' failed
make: *** [Release/obj.target/ftdi/src/ftdi_device.o] Error 1
make: Leaving directory '/home/cassiano/dev/rvnexus-lite/node_modules/ftdi/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/cassiano/.asdf/installs/nodejs/13.2.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:210:5)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:270:12)
gyp ERR! System Linux 5.0.0-37-generic
gyp ERR! command "/home/cassiano/.asdf/installs/nodejs/13.2.0/bin/node" "/home/cassiano/.asdf/installs/nodejs/13.2.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/cassiano/dev/rvnexus-lite/node_modules/ftdi
gyp ERR! node -v v13.2.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Sorry if I did something silly.

ccarnivore commented 4 years ago

had exactly the same error. you need to use nodejs v8 to compile it.

HMAZonderland commented 4 years ago

@ccarnivore not really, this happens on a RPI:

npm WARN prepare removing existing node_modules/ before installation

> ftdi@1.2.1 install /home/pi/web/node_modules/ftdi
> node-gyp rebuild

make: Entering directory '/home/pi/web/node_modules/ftdi/build'
  CXX(target) Release/obj.target/ftdi/src/ftdi_device.o
../src/ftdi_device.cc: In member function 'virtual void ReadWorker::HandleOKCallback()':
../src/ftdi_device.cc:190:85: warning: 'v8::Local<v8::Object> v8::Function::NewInstance(int, v8::Local<v8::Value>*) const' is deprecated: Use maybe version [-Wdeprecated-declarations]
       Local<Object> actualBuffer = bufferConstructor->NewInstance(3, constructorArgs);
                                                                                     ^
In file included from /home/pi/.cache/node-gyp/8.11.1/include/node/v8.h:26:0,
                 from /home/pi/.cache/node-gyp/8.11.1/include/node/node.h:63,
                 from /home/pi/.cache/node-gyp/8.11.1/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/pi/.cache/node-gyp/8.11.1/include/node/v8.h:3847:31: note: declared here
                 Local<Object> NewInstance(int argc, Local<Value> argv[]) const);
                               ^
/home/pi/.cache/node-gyp/8.11.1/include/node/v8config.h:318:3: note: in definition of macro 'V8_DEPRECATED'
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/ftdi_device.cc:202:29: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated [-Wdeprecated-declarations]
       callback->Call(2, argv);
                             ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc: In member function 'virtual void OpenWorker::HandleOKCallback()':
../src/ftdi_device.cc:341:29: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated [-Wdeprecated-declarations]
       callback->Call(1, argv);
                             ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc: In static member function 'static Nan::NAN_METHOD_RETURN_TYPE ftdi_device::FtdiDevice::Open(Nan::NAN_METHOD_ARGS_TYPE)':
../src/ftdi_device.cc:395:27: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated [-Wdeprecated-declarations]
     callback->Call(1, argv);
                           ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc: In member function 'virtual void WriteWorker::HandleOKCallback()':
../src/ftdi_device.cc:549:29: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated [-Wdeprecated-declarations]
       callback->Call(1, argv);
                             ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc: In member function 'virtual void CloseWorker::HandleOKCallback()':
../src/ftdi_device.cc:648:29: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated [-Wdeprecated-declarations]
       callback->Call(1, argv);
                             ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc: In static member function 'static Nan::NAN_METHOD_RETURN_TYPE ftdi_device::FtdiDevice::Close(Nan::NAN_METHOD_ARGS_TYPE)':
../src/ftdi_device.cc:678:29: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated [-Wdeprecated-declarations]
       callback->Call(1, argv);
                             ^
In file included from ../src/ftdi_device.h:9:0,
                 from ../src/ftdi_device.cc:11:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
../src/ftdi_device.cc: In member function 'void ftdi_device::FtdiDevice::ExtractDeviceSettings(v8::Local<v8::Object>)':
../src/ftdi_device.cc:770:61: warning: 'v8::Local<v8::Int32> v8::Value::ToInt32() const' is deprecated: Use maybe version [-Wdeprecated-declarations]
     deviceParams.baudRate = options->Get(baudrate)->ToInt32()->Int32Value();
                                                             ^
In file included from /home/pi/.cache/node-gyp/8.11.1/include/node/node.h:63:0,
                 from /home/pi/.cache/node-gyp/8.11.1/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/pi/.cache/node-gyp/8.11.1/include/node/v8.h:9796:14: note: declared here
 Local<Int32> Value::ToInt32() const {
              ^~~~~
../src/ftdi_device.cc:774:77: warning: 'v8::Local<v8::Int32> v8::Value::ToInt32() const' is deprecated: Use maybe version [-Wdeprecated-declarations]
     deviceParams.wordLength = GetWordLength(options->Get(databits)->ToInt32()->Int32Value());
                                                                             ^
In file included from /home/pi/.cache/node-gyp/8.11.1/include/node/node.h:63:0,
                 from /home/pi/.cache/node-gyp/8.11.1/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/pi/.cache/node-gyp/8.11.1/include/node/v8.h:9796:14: note: declared here
 Local<Int32> Value::ToInt32() const {
              ^~~~~
../src/ftdi_device.cc:778:73: warning: 'v8::Local<v8::Int32> v8::Value::ToInt32() const' is deprecated: Use maybe version [-Wdeprecated-declarations]
     deviceParams.stopBits = GetStopBits(options->Get(stopbits)->ToInt32()->Int32Value());
                                                                         ^
In file included from /home/pi/.cache/node-gyp/8.11.1/include/node/node.h:63:0,
                 from /home/pi/.cache/node-gyp/8.11.1/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/pi/.cache/node-gyp/8.11.1/include/node/v8.h:9796:14: note: declared here
 Local<Int32> Value::ToInt32() const {
              ^~~~~
../src/ftdi_device.cc:793:61: warning: 'v8::Local<v8::Int32> v8::Value::ToInt32() const' is deprecated: Use maybe version [-Wdeprecated-declarations]
       deviceParams.bitMode = options->Get(bitmode)->ToInt32()->Int32Value();
                                                             ^
In file included from /home/pi/.cache/node-gyp/8.11.1/include/node/node.h:63:0,
                 from /home/pi/.cache/node-gyp/8.11.1/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/pi/.cache/node-gyp/8.11.1/include/node/v8.h:9796:14: note: declared here
 Local<Int32> Value::ToInt32() const {
              ^~~~~
../src/ftdi_device.cc:801:61: warning: 'v8::Local<v8::Int32> v8::Value::ToInt32() const' is deprecated: Use maybe version [-Wdeprecated-declarations]
       deviceParams.bitMask = options->Get(bitmask)->ToInt32()->Int32Value();
                                                             ^
In file included from /home/pi/.cache/node-gyp/8.11.1/include/node/node.h:63:0,
                 from /home/pi/.cache/node-gyp/8.11.1/include/node/node_buffer.h:25,
                 from ../src/ftdi_device.cc:8:
/home/pi/.cache/node-gyp/8.11.1/include/node/v8.h:9796:14: note: declared here
 Local<Int32> Value::ToInt32() const {
              ^~~~~
  CXX(target) Release/obj.target/ftdi/src/ftdi_driver.o
../src/ftdi_driver.cc: In member function 'virtual void FindAllWorker::HandleOKCallback()':
../src/ftdi_driver.cc:187:27: warning: 'v8::Local<v8::Value> Nan::Callback::Call(int, v8::Local<v8::Value>*) const' is deprecated [-Wdeprecated-declarations]
     callback->Call(2, argv);
                           ^
In file included from ../src/ftdi_driver.h:8:0,
                 from ../src/ftdi_driver.cc:6:
../../nan/nan.h:1674:3: note: declared here
   Call(int argc, v8::Local<v8::Value> argv[]) const {
   ^~~~
  SOLINK_MODULE(target) Release/obj.target/ftdi.node
//usr/local/lib/libftd2xx.so: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status
ftdi.target.mk:135: recipe for target 'Release/obj.target/ftdi.node' failed
make: *** [Release/obj.target/ftdi.node] Error 1
make: Leaving directory '/home/pi/web/node_modules/ftdi/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/opt/nodejs/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at emitTwo (events.js:126:13)
gyp ERR! stack     at ChildProcess.emit (events.js:214:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
gyp ERR! System Linux 4.14.98-v7+
gyp ERR! command "/usr/bin/node" "/opt/nodejs/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/pi/web/node_modules/ftdi
gyp ERR! node -v v8.11.1
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! ftdi@1.2.1 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the ftdi@1.2.1 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/pi/.npm/_logs/2020-02-14T14_20_40_796Z-debug.log
ccarnivore commented 4 years ago

@HMAZonderland this issue was created for an ubuntu 18 platform. your error looks like you did'nt installed the FTDI library itself.