我有一个在VM中运行良好的自定义node.js应用程序,但是当我尝试在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 rebuild)。我正在使用"bcryptjs": "^2.3.0"
。
任何有关如何使其工作的建议表示赞赏! :)
答案 0 :(得分:0)
问题的根本原因是使用co-bcrypt
。从package.json
中删除它并用bcryptjs
替换所有require语句后,错误就消失了。