首页 > 解决方案 > 在 Node 10 中混淆安装错误与 ifxnjs

问题描述

在官方 node:10 docker 镜像上运行项目的 npm install 退出并出现令人困惑的构建错误。我可以提供其他细节,但我不知道什么是相关的。

../src/odbc.cpp: In static member function 'static v8::Local<v8::Value> ODBC::GetSQLError(SQLSMALLINT, SQLHANDLE, char*)':
../src/odbc.cpp:1184:87: error: no matching function for call to 'v8::Object::SetPrototype(v8::Local<v8::Value>)'
       objError->SetPrototype(Exception::Error(Nan::New(errorMessage).ToLocalChecked()));
                                                                                       ^
In file included from ../src/odbc.cpp:21:0:
/root/.node-gyp/10.15.3/include/node/v8.h:3442:37: note: candidate: v8::Maybe<bool> v8::Object::SetPrototype(v8::Local<v8::Context>, v8::Local<v8::Value>)
   V8_WARN_UNUSED_RESULT Maybe<bool> SetPrototype(Local<Context> context,
                                     ^~~~~~~~~~~~
/root/.node-gyp/10.15.3/include/node/v8.h:3442:37: note:   candidate expects 2 arguments, 1 provided
make: *** [Release/obj.target/ifx_njs_bind/src/odbc.o] Error 1
ifx_njs_bind.target.mk:113: recipe for target 'Release/obj.target/ifx_njs_bind/src/odbc.o' failed
make: Leaving directory '/usr/src/app/node_modules/ifxnjs-aa64/build'

已解决:通过切换到项目依赖项sails-informix而不是sails-informix2,docker 构建完成而没有错误。该构建安装了ifxnjs而不是“ifxnjs-aa64”。

看来作者几个月前分叉了一些模块。我以前没有安装过这些,所以我不知道这些差异。

标签: node.jsinformix

解决方案


我很想知道 docker VM 平台。Informix node.js 10.x 驱动程序已经在 NPM 中用于 Linux64、Win64 和 ARM,如果您在其中一个平台上,那么您不需要本地构建驱动程序本机组件。由于某种原因,它正在启动 Informix node.js 驱动程序本机组件的本地构建,(本地构建需要比通常的驱动程序安装更多的设置)。如果您不打算进行本地构建,那么您可以调查为什么您的环境会启动构建,而不是仅仅从 NPM 包管理器获取二进制文件。您可以尝试仅安装 Informix node.js 驱动程序吗,可以使用以下命令来完成。

npm install ifxnjs

一旦驱动程序安装成功,无论出于何种原因,您都可以执行“npm install”。


推荐阅读