Подтвердить что ты не робот

Npm install mongoose терпит неудачу (ошибки kerberos и bson)

Итак, я пытаюсь запустить мое приложение node, но есть несколько ошибок, связанных с установкой MongoDB.

Вот спецификации для моей среды dev:

node = > 0.10.33 (установлен с nodejs.org)

npm = > 1.4.28 (установленный из nodejs.org)

git = > 2.1.3 (homebrewed)

mongodb = > 2.6.5 (homebrewed)

Если это имеет значение, я также использую Скелет стека счёта в качестве части учебника.

В двух словах, когда я пытаюсь запустить приложение node с помощью $ node app.js, я получаю следующую обратную связь:

USER$ npm install mongoose

> [email protected] install /Users/USER/APP/node_modules/mongoose/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
  SOLINK_MODULE(target) Release/kerberos.node: Finished

> [email protected] install /Users/USER/APP/node_modules/mongoose/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bson/ext/bson.o
  SOLINK_MODULE(target) Release/bson.node
  SOLINK_MODULE(target) Release/bson.node: Finished
[email protected] node_modules/mongoose
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected])

Я проверил файлы builderror.log для модулей kerberos и bson. Однако оба они пусты.

Некоторые исследования, которые я нашел, показывают, что проблема может заключаться в том, что моя установка node-gyp не имеет соответствующего файла binding.gyp.

Также попытался запустить $ node-gyp configure внутри моей папки проекта Node.js. И это ошибка, которую я получил:

gyp: binding.gyp not found (cwd: /Users/USER/APP) while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/lib/node_modules/node-gyp/lib/configure.js:343:16)
gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:810:12)
gyp ERR! System Darwin 12.5.0
gyp ERR! command "node" "/usr/local/bin/node-gyp" "configure"
gyp ERR! cwd /Users/USER/APP
gyp ERR! node -v v0.10.33
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok

Любые идеи, почему у меня возникают эти проблемы?

EDIT: после установки порта в моем файле app.js, чтобы установить порт на тот же самый, который прослушивает Express-сервер (duh), я получаю больше отзывов о том, что я использовал Mongoose 3.9.4, что последний нестабильный выпуск mongoose. Поэтому я установил модуль в 3.8.18 в мой package.json и попытался переустановить модуль. Я получил те же ошибки. Однако неустойчивая обратная связь с выпуском отсутствует.

4b9b3361

Ответ 1

После я cd 'd в директории kerberos и bson я использовал команду $ node-gyp rebuild и модули node, скомпилированные правильно.

Мой app.js файл, я назвал следующие строки:

var app = express();
...
var Mongoose = require('mongoose');
var db = Mongoose.createConnection('localhost','database');

// all environments
app.set('port', process.env.PORT || 3000);

Этот номер порта должен быть уникальным из порта вашего экземпляра базы данных.

В отдельном окне терминала запустите $ mongod, чтобы размотать свой MongoDB. Как только он вызывается, в еще одном окне терминала вы вызываете $ mongo database. Это создает экземпляр базы данных с именем database для вашего приложения Node.js для подключения. В исходном окне терминала вызовите $ node app.js, и он будет работать без обратной связи.

Ошибки, которые я получал, не были результатом неправильной сборки Mongoose, MongoDB или любых их зависимостей. Ошибки были результатом неправильного представления о MongoDB. MongoDB должен работать как процесс, отдельный для вашего приложения Node.js, чтобы приложение могло подключиться к базе данных.

Ответ 2

Для тех, кто находится в дистрибутиве Linux, убедитесь, что у вас установлен libkrb5-dev (или ваш подобный дистрибутив). Это позаботится о многих ошибках сборки с помощью bson и kerberos.

Ответ 3

Для пользователей ubuntu сначала удалите moongose ​​

npm uninstall mongoose --save

затем установите обновление kerberos

apt-get install libkrb5-dev

затем снова установите "moongose"

npm install mongoose --save

Надеюсь, это поможет кому-то там.

Ответ 4

Я исправил это, установив node -gyp в глобальную область. Надеюсь, что это поможет.

$ npm install -g node-gyp 

Ответ 5

Я просто удаляю mongodb, а затем успешно устанавливаю mongoose.

npm uninstall mongodb --save
npm install mongoose --save