0

我正在尝试构建一个依赖于本机包的节点项目。

环境信息:

  • 操作系统:Ubuntu 20.04
  • gcc 版本:9.3.0(Ubuntu 9.3.0-17ubuntu1~20.04)
  • 节点JS版本:v9.6.1
  • npm 版本:5.6.0
  • Qt - >Qt 5.9.9(自定义安装,包括以下选项)
  • Qt 5.9.9 -> 桌面 gcc 64 位
  • Qt 5.9.9 -> Qt 网络授权
  • Qt 5.9.9 -> Qt 脚本(已弃用)
  • qtwebkit 版本:5.212

运行npm install后,项目失败并出现以下错误:


> dexi-browser-webkit@0.2.0 install /home/rando/Desktop/git/master-node/node/browser_engines/src/browsers/webkit
> node-gyp rebuild

make: Entering directory '/home/rando/Desktop/git/master-node/node/browser_engines/src/browsers/webkit/build'
  CXX(target) Release/obj.target/nodekit/native/nodekit.o
In file included from /home/rando/.node-gyp/9.6.1/include/node/node.h:63,
                 from ../native/nodekit.cc:3:
/home/rando/.node-gyp/9.6.1/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/rando/.node-gyp/9.6.1/include/node/v8.h:10378:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)’} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)’} [-Wcast-function-type]
10378 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/rando/.node-gyp/9.6.1/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/rando/.node-gyp/9.6.1/include/node/v8.h:10385:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)’} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)’} [-Wcast-function-type]
10385 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
In file included from ../native/nodekit.cc:5:
../node_modules/nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../node_modules/nan/nan.h:2232:62: 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]
 2232 |     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
      |                                                              ^
In file included from /opt/Qt/5.9.9/gcc_64/include/QtCore/qlocale.h:43,
                 from /opt/Qt/5.9.9/gcc_64/include/QtGui/qguiapplication.h:47,
                 from /opt/Qt/5.9.9/gcc_64/include/QtWidgets/qapplication.h:52,
                 from /opt/Qt/5.9.9/gcc_64/include/QtWidgets/QApplication:1,
                 from ../native/nodekit.cc:9:
/opt/Qt/5.9.9/gcc_64/include/QtCore/qvariant.h: In constructor ‘QVariant::QVariant(QVariant&&)’:
/opt/Qt/5.9.9/gcc_64/include/QtCore/qvariant.h:265:25: warning: implicitly-declared ‘QVariant::Private& QVariant::Private::operator=(const QVariant::Private&)’ is deprecated [-Wdeprecated-copy]
  265 |     { other.d = Private(); }
      |                         ^
/opt/Qt/5.9.9/gcc_64/include/QtCore/qvariant.h:380:16: note: because ‘QVariant::Private’ has user-provided ‘QVariant::Private::Private(const QVariant::Private&)’
  380 |         inline Private(const Private &other) Q_DECL_NOTHROW
      |                ^~~~~~~
In file included from ../native/qt_v8.h:41,
                 from ../native/instancemap.cc:7,
                 from ../native/nodekit.cc:19:
../native/moc_qfunction.h: At global scope:
../native/moc_qfunction.h:65:1: error: ‘QT_INIT_METAOBJECT’ does not name a type
   65 | QT_INIT_METAOBJECT const QMetaObject QFunction::staticMetaObject = { {
      | ^~~~~~~~~~~~~~~~~~
In file included from ../native/nodekit.cc:3:
/home/rando/.node-gyp/9.6.1/include/node/node.h:506:43: 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]
  506 |       (node::addon_register_func) (regfunc),                          \
      |                                           ^
/home/rando/.node-gyp/9.6.1/include/node/node.h:537:3: note: in expansion of macro ‘NODE_MODULE_X’
  537 |   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
      |   ^~~~~~~~~~~~~
../native/nodekit.cc:219:1: note: in expansion of macro ‘NODE_MODULE’
  219 | NODE_MODULE(nodekit, init)
      | ^~~~~~~~~~~
In file included from /home/rando/.node-gyp/9.6.1/include/node/node.h:63,
                 from ../native/nodekit.cc:3:
/home/rando/.node-gyp/9.6.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/rando/.node-gyp/9.6.1/include/node/node_object_wrap.h:85:78:   required from here
/home/rando/.node-gyp/9.6.1/include/node/v8.h:9338:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
 9338 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rando/.node-gyp/9.6.1/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../node_modules/nan/nan_object_wrap.h:66:61:   required from here
/home/rando/.node-gyp/9.6.1/include/node/v8.h:9338:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
make: *** [nodekit.target.mk:163: Release/obj.target/nodekit/native/nodekit.o] Error 1
make: Leaving directory '/home/rando/Desktop/git/master-node/node/browser_engines/src/browsers/webkit/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/rando/.nvm/versions/node/v9.6.1/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:258:23)
gyp ERR! stack     at ChildProcess.emit (events.js:127:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
gyp ERR! System Linux 5.8.0-44-generic
gyp ERR! command "/home/rando/.nvm/versions/node/v9.6.1/bin/node" "/home/rando/.nvm/versions/node/v9.6.1/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/rando/Desktop/git/master-node/node/browser_engines/src/browsers/webkit
gyp ERR! node -v v9.6.1
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! dexi-browser-webkit@0.2.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the dexi-browser-webkit@0.2.0 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/rando/.npm/_logs/2021-03-03T15_53_18_987Z-debug.log

4

1 回答 1

0

我通过执行以下操作解决了这个问题:

  • 删除sudo apt-get remove libgl-devGL/gl.h 文件所需的库
  • 安装了sudo apt install mesa-common-dev libglu1-mesa-dev修复缺少的依赖项 GL/gl.h 文件的库。
  • 在项目中运行以下命令qmake ; make clean; make -j8; node-gyp rebuild;
  • 在此之后, npm install命令成功完成
于 2021-03-04T12:14:04.797 回答