java - 为什么 NPM 包会导致 docker-compose 失败(已经工作了一年多)?
问题描述
npm 包导致问题:https ://www.npmjs.com/package/node-teradata
我已经将这个确切的 dockerfile 作为我的 docker-compose 的一部分运行了 16 个月,没有任何问题,突然在尝试让我的 docker-compose build 命令运行时,我收到以下错误:
> java@0.12.1 install /usr/src/app/node_modules/java
> node-gyp rebuild
make: Entering directory `/usr/src/app/node_modules/java/build'
CXX(target) Release/obj.target/nodejavabridge_bindings/src/java.o
CXX(target) Release/obj.target/nodejavabridge_bindings/src/javaObject.o
CXX(target) Release/obj.target/nodejavabridge_bindings/src/javaScope.o
CXX(target) Release/obj.target/nodejavabridge_bindings/src/methodCallBaton.o
CXX(target) Release/obj.target/nodejavabridge_bindings/src/nodeJavaBridge.o
CXX(target) Release/obj.target/nodejavabridge_bindings/src/utils.o
../src/utils.cpp: In function '_jobject* v8ToJava(JNIEnv*, v8::Local<v8::Value>)':
../src/utils.cpp:343:110: error: no matching function for call to 'v8::String::Value::Value(v8::Isolate*, v8::Local<v8::String>)'
v8::String::Value val(v8::Isolate::GetCurrent(), arg->ToString(Nan::GetCurrentContext()).ToLocalChecked());
^
../src/utils.cpp:343:110: note: candidate is:
In file included from ../src/utils.h:6:0,
from ../src/utils.cpp:1:
/root/.node-gyp/8.6.0/include/node/v8.h:2743:14: note: v8::String::Value::Value(v8::Local<v8::Value>)
explicit Value(Local<v8::Value> obj);
^
/root/.node-gyp/8.6.0/include/node/v8.h:2743:14: note: candidate expects 1 argument, 2 provided
make: Leaving directory `/usr/src/app/node_modules/java/build'
make: *** [Release/obj.target/nodejavabridge_bindings/src/utils.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:258:23)
gyp ERR! stack at emitTwo (events.js:125:13)
gyp ERR! stack at ChildProcess.emit (events.js:213:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.19.76-linuxkit
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/src/app/node_modules/java
gyp ERR! node -v v8.6.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN tslint@5.20.1 requires a peer of typescript@>=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev but none was installed.
npm WARN tsutils@2.29.0 requires a peer of typescript@>=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev but none was installed.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! java@0.12.1 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the java@0.12.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! /root/.npm/_logs/2021-06-25T20_05_36_205Z-debug.log
我需要 Java,因为它是我用于 Teradata 数据库连接的 jdbc 连接器的依赖项。
我的dockerfile如下:
# Create image based on the official Node 6 image from the dockerhub
FROM jimador/docker-jdk-8-maven-node
# Create a directory where our app will be placed
RUN mkdir -p /usr/src/app
# Change directory so that our commands run inside this new directory
WORKDIR /usr/src/app
# Copy dependency definitions
COPY package.json /usr/src/app
RUN npm install --save ignore-warnings
# Install dependecies
RUN npm install
# Get all the code needed to run the app
COPY . /usr/src/app
# copy artifact build from the 'build environment'
COPY resultset.js /usr/src/app/node_modules/jdbc/lib
# Expose the port the app runs in
EXPOSE 4200
# Serve the app
CMD ["npm", "start"]
任何帮助将不胜感激。
解决方案
推荐阅读
- javascript - JavaScript 正则表达式替换字符串的所有部分,但包含特定字符串的部分除外
- javascript - 为什么我需要硬编码凭证才能使用 javascript SDK 连接到 AWS?
- firebase - 创建 FirebaseAuth 实例创建并使用电子邮件和密码登录时收到错误
- docker - 如何使用相同的图像运行两个组件,将两个不同的参数传递给 docker-compose
- amazon-web-services - 允许 3 个不同环境之间的网络连接
- python - 如果单词没有任何数字,则拆分字符串
- python - 如何在时间图中绘制数组元素,每 5 秒显示一个值
- javascript - 如何在javascript中读取发送到点阵打印机的USB数据?
- mongodb - 将两个 lambda 函数合二为一?
- c++ - 为 esp-now 发送数据创建一个库