Я создал приложение Node с MongoDB, которое работает в Docker. Он работал нормально, пока не включил node.bcrypt.js. Это приводит к сбою узла с node-gyp
и bcrypt
.Ошибка установки Bcrypt в Docker
Приложение работает нормально и на Heroku.
Я попытался установить несколько предлагаемых пакетов, которые я нашел в Интернете, которые, как известно, были необходимы на основе сообщений об ошибках. Вот почему я добавил несколько дополнительных зависимостей, см. Ссылку node-gyp
в файле docker ниже.
Теперь он получил там, где я больше не могу найти предложений, но он по-прежнему не работает. Я чувствую себя странно, что он работает как на местном, так и на Хеорку, но не на Докере, и поэтому мне чего-то не хватает.
Заранее спасибо.
Ошибка:
> [email protected] start /server
> node index.js
COPY Release/bcrypt_lib.node
make: Leaving directory `/server/node_modules/bcrypt/build'
module.js:338
throw err;
^
Error: Cannot find module './lib/topologies/server'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:278:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/server/node_modules/mongodb/node_modules/mongodb-core/index.js:3:13)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
npm ERR! Linux 3.13.0-58-generic
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "start"
npm ERR! node v0.12.7
npm ERR! npm v2.11.3
npm ERR! code ELIFECYCLE
npm ERR! [email protected] start: `node index.js`
npm ERR! Exit status 1
Это после того, как я добавил несколько установок в моей Dockerfile, увидеть линию после node-gyp
. Dockerfile:
# Base Docker-image on Ubuntu
FROM ubuntu:latest
#install mongodb
#install git, curl, python and mongo
# node-gyp
RUN apt-get install -y build-essential make automake gcc g++ cpp libkrb5-dev libc6-dev man-db autoconf pkg-config
# Create the MongoDB data directory
RUN mkdir -p /data/db
# mongodb setup
# Install NodeJS
RUN curl --silent --location https://deb.nodesource.com/setup_0.12 | sudo bash -
RUN apt-get update && apt-get install -y nodejs
RUN npm install -g node-gyp
# Git-clone project
# expose ports
# Install dependencies and start server and database
CMD cd /server && sh start.sh
starth.sh
-script просто устанавливает зависимости и начинает как MongoDB и сервер.
EDIT: repo говорит мне, чтобы проверить node-gyp dependencies, но я чувствую, что это была покрыта Dockerfile, показанной выше.
Этот пакет был недавно обновлен и основан на связанном пакете, представленном в этом ответе, - https://github.com/dcodeIO/bcrypt.js. Помня о том, что bcrypt обновляется наиболее последовательно по сравнению с любым из этих вариантов, поэтому, если ответ @ davidgatti работает, вы используете его над этими пакетами. – mtpultz