Tôi đã viết một ứng dụng đơn giản bằng nút. Nó phụ thuộc vào thể hiện, mongodb và mongoose (dễ dàng). Vì vậy, tôi đã tạo ra một tập tin gọi là package.json
và đặt điều này trong nó:Cách viết tệp package.json để tất cả các phụ thuộc được tải xuống bằng "npm install"
{
"name": "booking-dojo",
"description": "Booking dojo app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.x",
"mongodb": "*",
"mongoose": "*"
}
}
sau đó tôi chạy npm install
, mong NPM để cài đặt những mô-đun và phụ thuộc của họ. Kết quả là đáng thất vọng:
[email protected] /home/merc/Synced/Development/Bookings/app/server
├─┬ [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]
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
├─┬ mongodb[email protected]
│ └── [email protected]
└─┬ [email protected]
├── [email protected]
└── [email protected]
Tôi bối rối bởi điều này, như tôi biết rằng express
nhu cầu jade
(và nhiều hơn nữa), và mongoose
nhu cầu mongodb
.
Nếu tôi đi vào node_modules/jade
và chạy npm install
, kết quả từ các cây trồng chính là rất khác nhau:
[email protected] /home/merc/Synced/Development/Bookings/app/server
├─┬ [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]
│ ├── [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]
│ │ └── [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]
├─┬ [email protected]
│ └── [email protected]
└─┬ [email protected]
├── [email protected]
└── [email protected]
Vì vậy, express
có phát triển rất nhiều. Có vẻ như npm install
chỉ tải một số phụ thuộc của các mô-đun phụ.
Ai đó có thể làm sáng tỏ điều này không? Tại sao một số phụ thuộc bị thiếu? Tôi có làm điều gì sai? (có thể)
Cảm ơn!
Merc.
Một điều cần lưu ý là nếu một gói phụ thuộc vào một mô-đun có thể được giải quyết tiếp tục lên trong chuỗi sự phụ thuộc, nó sẽ. Ví dụ, vì bạn có 'mongodb' trong package.json của bạn, Mongoose không cần cài đặt' mongodb' của riêng nó. –
Brandon, đây * là * câu trả lời. Tôi chỉ tìm ra cách đây không lâu. Về cơ bản, nó không cài đặt MongoDb dưới Mongoose bởi vì nó được giải quyết thêm. Vì đây là * câu trả lời thực tế, bạn có thể vui lòng thêm nó làm câu trả lời thích hợp, thay vì nhận xét, để tôi có thể chấp nhận nó không? – Merc
@Peter Điểm tốt, các ứng dụng * được tạo bởi express sẽ có tuy nhiên thể hiện như là một phụ thuộc BTW. Câu hỏi của tôi, "tại sao một số phụ thuộc bị thiếu?", Có câu trả lời đơn giản (do Brandon cung cấp) "Chúng bị thiếu bởi vì chúng được giải quyết thêm trong cây phụ thuộc". Cảm ơn! – Merc