node.js - Docker 运行失败 "return process.dlopen(module, path.toNamespacedPath(filename));"

标签 node.js docker express bcrypt

我正在尝试制作一个 dockerfile 并将我的代码运行到这个容器中。我收到以下错误:

node:internal/modules/cjs/loader:1187
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^

Error: /node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node: invalid ELF header
    at Object.Module._extensions..node (node:internal/modules/cjs/loader:1187:18)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/node_modules/bcrypt/bcrypt.js:6:16)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12) {
  code: 'ERR_DLOPEN_FAILED'
}

我的应用程序在没有 docker 的情况下工作正常。 我也尝试像这个问题一样删除 bcrypt:Node - was compiled against a different Node.js version using NODE_MODULE_VERSION 51

docker 文件:

FROM node:16
WORKDIR ./
COPY package*.json ./
RUN npm install 
COPY . .
EXPOSE 4000
CMD ["node", "server.js"]

.dockerignore:

node_modules
upload
export
converage
.git
.tmp
.vscode
.github
.env

最佳答案

你需要添加一个.dockerignore

基本的 .dockerignore 看起来像

# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

关于node.js - Docker 运行失败 "return process.dlopen(module, path.toNamespacedPath(filename));",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71910780/

相关文章:

node.js - 如何在 Google App Engine 上运行迁移

java - 如何防止Dockerfile中的脚本退出?

c++ - Opencv 链接 CMAKE 不工作 Ubuntu 16.04 Docker

curl - 库伯斯。 HTTPS API 返回 `Unauthorized`

javascript - 如何使用 Mongoose 从集合中的所有文档中删除字段?

javascript - 将 Fluture Future 转换为民间故事结果

Node.js 以异步模式将值传递给变量

node.js - POST 请求类型错误 - 无法读取未定义的属性

html - node.js , mongodb, mongoose, html 如何插入数据(在 index.html 中)?

javascript - 浏览器刷新后,AngularJS 设置的 Cookie 将被忽略