我有一个自定义的node.js应用,可在VM中正常运行,但是当我尝试在docker中运行时,出现错误

Error initializing middleware
Error: Could not locate the bindings file. Tried:
 → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/build/bcrypt_lib.node
 → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/build/Debug/bcrypt_lib.node
 → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/build/Release/bcrypt_lib.node
 → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/out/Debug/bcrypt_lib.node
 → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/Debug/bcrypt_lib.node
 → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/out/Release/bcrypt_lib.node
 → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/Release/bcrypt_lib.node
 → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/build/default/bcrypt_lib.node
 → /usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/compiled/4.8.4/linux/x64/bcrypt_lib.node
    at bindings (/usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/node_modules/bindings/bindings.js:88:9)
    at Object.<anonymous> (/usr/src/app/node_modules/co-bcrypt/node_modules/bcrypt/bcrypt.js:3:35)

Dockerfile如下所示
FROM node:4-onbuild

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json .
ENV PORT 8080

RUN npm install
RUN npm install --unsafe-perm node-gyp
RUN npm install --unsafe-perm libxmljs
RUN npm rebuild

# Bundle app source
COPY . .

EXPOSE 8080
CMD [ "npm", "start" ]

我已经添加了here提到的建议,但没有成功(安装node-gyp和libxmljs,进行npm重建)。我正在使用"bcryptjs": "^2.3.0"

任何建议如何使其工作表示赞赏! :)

最佳答案

问题的根本原因是使用co-bcrypt。将其从package.json中删除并将所有require语句替换为bcryptjs之后,错误消失了。

08-26 22:59