问题:错误:libnode.so.64:无法打开共享对象文件:没有这样的文件或目录 - Docker 容器

我在 ubuntu 上创建了一个带有以下包的 docker 容器:default-jdk、node.js、curl、git、npm、python、make、gcc。

我正在尝试在容器内运行此工具https://github.com/oasis-tcs/odata-openapi/tree/master/tools。已安装所有必需的依赖项(如 node-gyp),并且可以使用 npm 安装工具本身而不会出现任何错误,正如自述文件中所述。

但是,当尝试执行命令时,我总是会收到此错误:

Error: libnode.so.64: cannot open shared object file: No such file or directory
        at Object.Module._extensions..node (internal/modules/cjs/loader.js:1025:18)
        at Module.load (internal/modules/cjs/loader.js:815:32)
        at Function.Module._load (internal/modules/cjs/loader.js:727:14)
        at Module.require (internal/modules/cjs/loader.js:852:19)
        at require (internal/modules/cjs/helpers.js:74:18)
        at Object.<anonymous> (/odata-openapi/tools/node_modules/java/lib/nodeJavaBridge.js:21:16)
        at Module._compile (internal/modules/cjs/loader.js:959:30)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:995:10)
        at Module.load (internal/modules/cjs/loader.js:815:32)
        at Function.Module._load (internal/modules/cjs/loader.js:727:14)

到目前为止,我尝试重新安装 node.js、node-gyp、安装 node-libs 等软件包和不同的 ubuntu 版本。该工具在主机系统上运行良好。

有谁知道如何处理这个?这可能真的很简单,但到目前为止我不知道如何进行。提前致谢!

解答

我怀疑你的 nodejs 安装不匹配。

在安装正确版本的 nodejs 之后制作npm i很重要。

在主机上,当 nodejs 在npm i之后升级时会出现这种情况。在这种情况下,请:

npm clean-install

瞧。

对于您的特定 docker 用例:您应该确保您安装了 nodejs 并从容器内执行了npm i,通常在您的Dockerfile中使用RUN命令。这样你就永远不会出现不匹配的情况。

但是,如果您在主机上安装 nodejs 并将卷共享到您的容器,就会出现这种情况:避免这种情况并转向我之前提到的内容。

Logo

Ubuntu 社区为您提供最前沿的新闻资讯和知识内容

更多推荐