Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix NPM install SQLite build fail?

I just installed macOS Mojave and installed latest versions for node 12.1.0, npm 6.9.0, brew 2.1.1 and Python 2.7.10 on darwin. I am running npm install in a package.json for a project with "sqlite3": "4.0.6" and receive the following log message which fails at the [email protected] install script. How am I able to fix the error and install SQLite successfully? It's breaking and showing error logs at v8 functions, here is the partial snapshot of error logs, I removed some of the v8 errors to post the log.

✗ npm install

> [email protected] install /Users/default/Desktop/personal/default/node_modules/sqlite3
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using request for node-pre-gyp https download 
node-pre-gyp WARN Tried to download(403): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v4.0.6/node-v72-darwin-x64.tar.gz 
node-pre-gyp WARN Pre-built binaries not found for [email protected] and [email protected] (node-v72 ABI, unknown) (falling back to source compile with node-gyp) 
  ACTION deps_sqlite3_gyp_action_before_build_target_unpack_sqlite_dep Release/obj/gen/sqlite-autoconf-3260000/sqlite3.c
  TOUCH Release/obj.target/deps/action_before_build.stamp
  CC(target) Release/obj.target/sqlite3/gen/sqlite-autoconf-3260000/sqlite3.o
  LIBTOOL-STATIC Release/sqlite3.a
  CXX(target) Release/obj.target/node_sqlite3/src/database.o
In file included from ../src/database.cc:4:
In file included from ../src/database.h:10:
In file included from ../node_modules/nan/nan.h:202:
In file included from ../node_modules/nan/nan_converters.h:67:
../node_modules/nan/nan_converters_43_inl.h:22:1: warning: 'ToBoolean' is deprecated: ToBoolean can never throw. Use Local
      version. [-Wdeprecated-declarations]
X(Boolean)
^
../node_modules/nan/nan_converters_43_inl.h:18:12: note: expanded from macro 'X'
      val->To ## TYPE(isolate->GetCurrentContext())                            \
           ^
<scratch space>:31:1: note: expanded from here
ToBoolean
^
/Users/default/.node-gyp/12.1.0/include/node/v8.h:2523:3: note: 'ToBoolean' has been explicitly marked deprecated here
  V8_DEPRECATE_SOON("ToBoolean can never throw. Use Local version.",
  ^
/Users/default/.node-gyp/12.1.0/include/node/v8config.h:322:29: note: expanded from macro 'V8_DEPRECATE_SOON'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/database.cc:4:
In file included from ../src/database.h:10:
In file included from ../node_modules/nan/nan.h:202:
In file included from ../node_modules/nan/nan_converters.h:67:
../node_modules/nan/nan_converters_43_inl.h:40:1: warning: 'BooleanValue' is deprecated: BooleanValue can never throw. Use
      Isolate version. [-Wdeprecated-declarations]
X(bool, Boolean)
^
../node_modules/nan/nan_converters_43_inl.h:37:15: note: expanded from macro 'X'
  return val->NAME ## Value(isolate->GetCurrentContext());                     \
              ^
<scratch space>:38:1: note: expanded from here
BooleanValue
^
/Users/default/.node-gyp/12.1.0/include/node/v8.h:2561:3: note: 'BooleanValue' has been explicitly marked deprecated here
  V8_DEPRECATED("BooleanValue can never throw. Use Isolate version.",
  ^
/Users/default/.node-gyp/12.1.0/include/node/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/database.cc:4:
In file included from ../src/database.h:10:
In file included from ../node_modules/nan/nan.h:203:
In file included from ../node_modules/nan/nan_new.h:189:
../node_modules/nan/nan_implementation_12_inl.h:103:42: error: no viable conversion from 'v8::Isolate *' to 'Local<v8::Context>'
  return scope.Escape(v8::Function::New( isolate
                                         ^~~~~~~
/Users/default/.node-gyp/12.1.0/include/node/v8.h:183:7: note: candidate constructor (the implicit copy constructor) not viable:
      no known conversion from 'v8::Isolate *' to 'const v8::Local<v8::Context> &' for 1st argument
class Local {
      ^
/Users/default/.node-gyp/12.1.0/include/node/v8.h:183:7: note: candidate constructor (the implicit move constructor) not viable:
      no known conversion from 'v8::Isolate *' to 'v8::Local<v8::Context> &&' for 1st argument
/Users/default/.node-gyp/12.1.0/include/node/v8.h:187:13: note: candidate template ignored: could not match
      'Local<type-parameter-0-0>' against 'v8::Isolate *'
  V8_INLINE Local(Local<S> that)
            ^
/Users/default/.node-gyp/12.1.0/include/node/v8.h:4126:22: note: passing argument to parameter 'context' here
      Local<Context> context, FunctionCallback callback,
                     ^
In file included from ../src/database.cc:4:
In file included from ../src/database.h:10:
In file included from ../node_modules/nan/nan.h:203:
In file included from ../node_modules/nan/nan_new.h:189:
../node_modules/nan/nan_implementation_12_inl.h:337:37: error: too few arguments to function call, expected 2, have 1
  return v8::StringObject::New(value).As<v8::StringObject>();
         ~~~~~~~~~~~~~~~~~~~~~      ^
/Users/default/.node-gyp/12.1.0/include/node/v8.h:5380:3: note: 'New' declared here
  static Local<Value> New(Isolate* isolate, Local<String> value);
  ^
In file included from ../src/database.cc:4:
In file included from ../src/database.h:10:
In file included from ../node_modules/nan/nan.h:203:
In file included from ../node_modules/nan/nan_new.h:189:
../node_modules/nan/nan_implementation_12_inl.h:337:58: error: expected '(' for function-style cast or type construction
  return v8::StringObject::New(value).As<v8::StringObject>();
                                         ~~~~~~~~~~~~~~~~^
../node_modules/nan/nan_implementation_12_inl.h:337:60: error: expected expression
  return v8::StringObject::New(value).As<v8::StringObject>();
                                                           ^
In file included from ../src/database.cc:4:
In file included from ../src/database.h:10:
../node_modules/nan/nan.h:1034:44: error: no matching member function for call to 'ToString'
      v8::Local<v8::String> string = from->ToString();
                                     ~~~~~~^~~~~~~~
/Users/default/.node-gyp/12.1.0/include/node/v8.h:2528:44: note: candidate function not viable: requires single argument
      'context', but no arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                           ^
/Users/default/.node-gyp/12.1.0/include/node/v8.h:2544:35: note: candidate function not viable: requires single argument
      'isolate', but no arguments were provided
                    Local<String> ToString(Isolate* isolate) const);
                                  ^
In file included from ../src/database.cc:4:
In file included from ../src/database.h:10:
../node_modules/nan/nan.h:1044:37: error: cannot initialize a parameter of type 'v8::Isolate *' with an lvalue of type 'char *'
        length_ = string->WriteUtf8(str_, static_cast<int>(len), 0, flags);
                                    ^~~~
/Users/default/.node-gyp/12.1.0/include/node/v8.h:2738:26: note: passing argument to parameter 'isolate' here
  int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,
                         ^
In file included from ../src/database.cc:4:
In file included from ../src/database.h:10:
../node_modules/nan/nan.h:1818:28: warning: 'Set' is deprecated: Use maybe version [-Wdeprecated-declarations]
    New(persistentHandle)->Set(New(key).ToLocalChecked(), value);
                           ^
/Users/default/.node-gyp/12.1.0/include/node/v8.h:3358:3: note: 'Set' has been explicitly marked deprecated here
  V8_DEPRECATE_SOON("Use maybe version",
  ^
/Users/default/.node-gyp/12.1.0/include/node/v8config.h:322:29: note: expanded from macro 'V8_DEPRECATE_SOON'
  declarator __attribute__((deprecated(message)))
                            ^
In file included from ../src/database.cc:4:
In file included from ../src/database.h:10:
../node_modules/nan/nan.h:1824:28: warning: 'Set' is deprecated: Use maybe version [-Wdeprecated-declarations]
    New(persistentHandle)->Set(key, value);
                           ^
In file included from ../src/database.cc:4:
In file included from ../src/database.h:10:
In file included from ../node_modules/nan/nan.h:2657:
../node_modules/nan/nan_object_wrap.h:67:18: warning: 'MarkIndependent' is deprecated: Weak objects are always considered
      independent. Use TracedGlobal when trying to use EmbedderHeapTracer. Use a strong handle when trying to keep an object
      alive. [-Wdeprecated-declarations]
    persistent().MarkIndependent();
                 ^
/Users/default/.node-gyp/12.1.0/include/node/v8.h:563:3: note: 'MarkIndependent' has been explicitly marked deprecated here
  V8_DEPRECATED(
  ^
/Users/default/.node-gyp/12.1.0/include/node/v8config.h:307:29: note: expanded from macro 'V8_DEPRECATED'
  declarator __attribute__((deprecated(message)))
                            ^
../src/database.cc:40:9: error: too few arguments to function call, expected 3, have 2
        EXCEPTION(Nan::New("Database handle is closed").ToLocalChecked(), SQLITE_MISUSE, exception);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/macros.h:91:13: note: expanded from macro 'EXCEPTION'
            ),                                                                 \
            ^
/Users/default/.node-gyp/12.1.0/include/node/v8.h:2925:3: note: 'Concat' declared here
  static Local<String> Concat(Isolate* isolate, Local<String> left,
  ^
../src/database.cc:49:17: warning: 'MakeCallback' is deprecated [-Wdeprecated-declarations]
                TRY_CATCH_CALL(this->handle(), cb, 1, argv);
                ^
../src/macros.h:109:10: note: expanded from macro 'TRY_CATCH_CALL'
    Nan::MakeCallback((context), (callback), (argc), (argv))
         ^
../node_modules/nan/nan.h:929:3: note: 'MakeCallback' has been explicitly marked deprecated here
  NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
  ^
../node_modules/nan/nan.h:98:40: note: expanded from macro 'NAN_DEPRECATED'
# define NAN_DEPRECATED __attribute__((deprecated))
                                       ^
../src/database.cc:63:13: warning: 'MakeCallback' is deprecated [-Wdeprecated-declarations]
            EMIT_EVENT(handle(), 2, info);
            ^
../src/macros.h:102:5: note: expanded from macro 'EMIT_EVENT'
    TRY_CATCH_CALL((obj),                                                      \
    ^
../src/database.cc:625:9: warning: unused variable 'status' [-Wunused-variable]
    int status = uv_queue_work(uv_default_loop(),
        ^
../src/database.cc:659:9: error: too few arguments to function call, expected 3, have 2
        EXCEPTION(Nan::New(baton->message.c_str()).ToLocalChecked(), baton->status, exception);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/macros.h:91:13: note: expanded from macro 'EXCEPTION'
            ),                                                                 \
            ^
/Users/default/.node-gyp/12.1.0/include/node/v8.h:2925:3: note: 'Concat' declared here
  static Local<String> Concat(Isolate* isolate, Local<String> left,
  ^
../src/database.cc:663:13: warning: 'MakeCallback' is deprecated [-Wdeprecated-declarations]
            TRY_CATCH_CALL(db->handle(), cb, 1, argv);
            ^
../src/macros.h:109:10: note: expanded from macro 'TRY_CATCH_CALL'
    Nan::MakeCallback((context), (callback), (argc), (argv))
         ^
../node_modules/nan/nan.h:929:3: note: 'MakeCallback' has been explicitly marked deprecated here
  NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
  ^
../node_modules/nan/nan.h:98:40: note: expanded from macro 'NAN_DEPRECATED'
# define NAN_DEPRECATED __attribute__((deprecated))
                                       ^
../src/database.cc:667:13: warning: 'MakeCallback' is deprecated [-Wdeprecated-declarations]
            EMIT_EVENT(db->handle(), 2, info);
            ^
../src/macros.h:102:5: note: expanded from macro 'EMIT_EVENT'
    TRY_CATCH_CALL((obj),                                                      \
    ^
../src/macros.h:109:10: note: expanded from macro 'TRY_CATCH_CALL'
    Nan::MakeCallback((context), (callback), (argc), (argv))
         ^
../node_modules/nan/nan.h:929:3: note: 'MakeCallback' has been explicitly marked deprecated here
  NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
  ^
../node_modules/nan/nan.h:98:40: note: expanded from macro 'NAN_DEPRECATED'
# define NAN_DEPRECATED __attribute__((deprecated))
                                       ^
../src/database.cc:672:9: warning: 'MakeCallback' is deprecated [-Wdeprecated-declarations]
        TRY_CATCH_CALL(db->handle(), cb, 1, argv);
        ^
../src/macros.h:109:10: note: expanded from macro 'TRY_CATCH_CALL'
    Nan::MakeCallback((context), (callback), (argc), (argv))
         ^
../node_modules/nan/nan.h:929:3: note: 'MakeCallback' has been explicitly marked deprecated here
  NAN_DEPRECATED inline v8::Local<v8::Value> MakeCallback(
  ^
../node_modules/nan/nan.h:98:40: note: expanded from macro 'NAN_DEPRECATED'
# define NAN_DEPRECATED __attribute__((deprecated))
                                       ^
37 warnings and 13 errors generated.
make: *** [Release/obj.target/node_sqlite3/src/database.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack     at ChildProcess.emit (events.js:196:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:256:12)
gyp ERR! System Darwin 18.5.0
gyp ERR! command "/usr/local/Cellar/node/12.1.0/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/Users/default/Desktop/personal/default/node_modules/sqlite3/lib/binding/node-v72-darwin-x64/node_sqlite3.node" "--module_name=node_sqlite3" "--module_path=/Users/default/Desktop/personal/default/node_modules/sqlite3/lib/binding/node-v72-darwin-x64" "--napi_version=4" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v72"
gyp ERR! cwd /Users/default/Desktop/personal/default/node_modules/sqlite3
gyp ERR! node -v v12.1.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok 
node-pre-gyp ERR! build error 
node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/Cellar/node/12.1.0/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/Users/default/Desktop/personal/default/node_modules/sqlite3/lib/binding/node-v72-darwin-x64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/Users/default/Desktop/personal/default/node_modules/sqlite3/lib/binding/node-v72-darwin-x64 --napi_version=4 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v72' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/Users/default/Desktop/personal/default/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:196:13)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:1000:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:267:5)
node-pre-gyp ERR! System Darwin 18.5.0
node-pre-gyp ERR! command "/usr/local/Cellar/node/12.1.0/bin/node" "/Users/default/Desktop/personal/default/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /Users/default/Desktop/personal/default/node_modules/sqlite3
node-pre-gyp ERR! node -v v12.1.0
node-pre-gyp ERR! node-pre-gyp -v v0.11.0
node-pre-gyp ERR! not ok 
Failed to execute '/usr/local/Cellar/node/12.1.0/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/Users/default/Desktop/personal/default/node_modules/sqlite3/lib/binding/node-v72-darwin-x64/node_sqlite3.node --module_name=node_sqlite3 --module_path=/Users/default/Desktop/personal/default/node_modules/sqlite3/lib/binding/node-v72-darwin-x64 --napi_version=4 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v72' (1)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] 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!     /Users/default/.npm/_logs/2019-05-02T21_02_01_505Z-debug.log
like image 989
alt-rock Avatar asked May 02 '19 21:05

alt-rock


2 Answers

From the Readme . The sqlite3 module works with Node.js v4.x, v6.x, v8.x, and v10.x. . You should downgrade to Node v10 until this module has certified support for Node v12.

EDIT: Per below comments, Node v11 and v12 are supported now: October 2020 - Update

"The sqlite3 module works with Node.js v4.x, v6.x, v8.x, v10.x, v11.x and v12.x" - Source - https://www.npmjs.com/package/sqlite3/v/4.1.1

like image 198
tagyoureit Avatar answered Sep 18 '22 16:09

tagyoureit


From the version 4.1.1 https://github.com/mapbox/node-sqlite3/releases/tag/v4.1.1, the sqlite3 should support Node.JS v12 and v13.

So please take a look at the packages that depend on sqlite3 to install the updated version.

like image 40
motou Avatar answered Sep 19 '22 16:09

motou