我有一个自定义的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
之后,错误消失了。