2014-11-05 44 views
23

Vì vậy, tôi đang cố gắng khởi chạy ứng dụng nút của mình, nhưng có một vài lỗi phát sinh từ cài đặt MongoDB của tôi.npm install mongoose không thành công (lỗi kerberos và bson)

Sau đây là các thông số kỹ thuật cho môi trường dev của tôi:

node => 0.10.33 (cài đặt từ nodejs.org)

NPM => 1.4.28 (cài đặt từ nodejs .org)

git => 2.1.3 (homebrewed)

mongodb => 2.6.5 (homebrewed)

Nếu tạo sự khác biệt, tôi cũng đang sử dụng Mean Stack Skeleton như một phần của hướng dẫn.

Tóm lại, khi tôi cố gắng chạy ứng dụng nút của tôi sử dụng $ node app.js, tôi nhận được thông tin phản hồi như sau:

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]) 

Tôi đã kiểm tra builderror.log file cho cả kerberosbson mô-đun. Tuy nhiên, cả hai đều trống.

Một số nghiên cứu tôi đã tìm thấy cho thấy vấn đề có thể là do cài đặt node-gyp của tôi không có tệp binding.gyp tương ứng.

Cũng thử chạy $ node-gyp configure bên trong thư mục dự án Node.js của tôi. Và đây là lỗi tôi đã nhận được:

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 

Mọi ý tưởng tại sao tôi gặp phải những vấn đề này?

EDIT: Sau khi cài đặt cổng trong tệp app.js để đặt cổng cho cùng một cổng mà máy chủ Express đang nghe (duh), tôi nhận được nhiều phản hồi hơn cho biết rằng tôi đã sử dụng Mongoose 3.9.4, đó là bản phát hành không ổn định mới nhất của mongoose. Vì vậy, tôi đặt mô-đun thành 3.8.18 trong số package.json và cố gắng cài đặt lại mô-đun. Tôi đã nhận được các lỗi tương tự. Tuy nhiên, phản hồi phát hành không ổn định đã biến mất.

Trả lời

0

Sau khi tôi cd 'd vào các thư mục kerberosbson, tôi đã sử dụng lệnh $ node-gyp rebuild và mô-đun nút được biên dịch chính xác.

app.js tập tin của tôi, tôi gọi những dòng sau:

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

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

số cổng này phải là duy nhất từ ​​cảng dụ cơ sở dữ liệu của bạn.

Trong cửa sổ đầu cuối riêng biệt, hãy chạy $ mongod để làm tăng kích thước MongoDB của bạn. Khi được gọi, trong một cửa sổ đầu cuối khác, bạn gọi số $ mongo database. Điều này tạo ra cá thể cơ sở dữ liệu được gọi là database cho ứng dụng Node.js của bạn để kết nối. Trong cửa sổ đầu cuối ban đầu của bạn, hãy gọi $ node app.js và nó sẽ chạy mà không có bất kỳ phản hồi lỗi nào.

Các lỗi tôi nhận được không phải là kết quả của việc xây dựng Mongoose không đúng, MongoDB hoặc bất kỳ sự phụ thuộc nào của chúng. Các lỗi này là kết quả của một quan niệm sai lầm về MongoDB. MongoDB phải chạy như một tiến trình riêng biệt với ứng dụng Node.js của bạn để ứng dụng tạo kết nối cơ sở dữ liệu.

13

Tôi đã sửa lỗi này bằng cách cài đặt nút-gyp vào phạm vi toàn cục. Hy vọng nó giúp.

$ npm install -g node-gyp 
+0

đơn giản, ngọt ngào, và làm việc cho tôi –

+0

cảm ơn bạn rất nhiều – Shreyas

4

Tôi vừa gỡ cài đặt mongodb và sau đó cài đặt thành công.

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

Đối với bất kỳ ai trên bản phân phối Linux, hãy đảm bảo bạn đã cài đặt libkrb5-dev (hoặc gói tương tự của bản phân phối). Điều này sẽ chăm sóc nhiều lỗi xây dựng với bson và kerberos.

+2

đã làm việc hoàn hảo – MQ87

+1

Cảm ơn bạn rất nhiều, nó hoạt động! Tôi đã có cùng một vấn đề trong Linux Mint 17 và giải quyết để cài đặt gói: http://community.linuxmint.com/software/view/libkrb5-dev – iarroyo

+1

Quản lý để cài đặt Mongoose và MongoDB bằng cách sử dụng mẹo này. Tôi vẫn còn một vài cảnh báo trong thiết bị đầu cuối của tôi nhưng không có lỗi. Ubuntu 14.04. – piratemurray

18

Đối với người dùng ubuntu, gỡ bỏ cài đặt đầu tiên moongose ​​

npm uninstall mongoose --save 

sau đó cài đặt bản cập nhật một Kerberos

apt-get install libkrb5-dev 

sau đó "cài đặt" moongose ​​lại

npm install mongoose --save 

Tôi hy vọng điều này sẽ giúp ai đó có .

Các vấn đề liên quan