Napisałem prostą aplikację za pomocą węzła. Zależy od ekspresu, mongody i mangusty (łatwe). Więc stworzyłem plik o nazwie package.json
i umieścić to w nim:Jak napisać plik package.json, aby wszystkie zależności były pobierane za pomocą "npm install"
{
"name": "booking-dojo",
"description": "Booking dojo app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.x",
"mongodb": "*",
"mongoose": "*"
}
}
I pobiegł npm install
, oczekując npm zainstalować te moduły i ich zależności. Wynik był rozczarowujący:
[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]3
├── [email protected]
└── [email protected]
jestem zdezorientowany tym, jak wiem że express
potrzeb jade
(i wiele innych) oraz mongoose
potrzeb mongodb
.
Jeśli pójdę do node_modules/jade
i uruchomić npm install
, wynik z głównego drzewa jest bardzo różny:
[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]
Więc express
ma uprawianych dużo. Wygląda na to, że npm install
ładuje tylko niektóre z zależności pod-modułów.
Czy ktoś może rzucić trochę światła na to? Dlaczego brakuje niektórych zależności? czy robię coś źle? (prawdopodobnie)
Dzięki!
Merc.
Inną rzeczą, aby pamiętać, że jeśli pakiet zależy od modułu, który może być rozwiązany dalej w łańcuchu zależności, to będzie. Na przykład, ponieważ masz 'mongodb' w twoim package.json, Mongoose nie musi instalować własnego' mongodb'. –
Brandon, to * jest * odpowiedź. Pojąłem to niedawno. Zasadniczo nie instaluje MongoDb w Mongoose, ponieważ jest on dalej rozwiązywany. Ponieważ to * jest * rzeczywistą odpowiedzią, czy możesz dodać ją jako właściwą odpowiedź, a nie jako komentarz, aby ją zaakceptować? – Merc
@Peter Dobry punkt, aplikacje * generowane * przez ekspresowe będą jednak wyrażać jako zależność BTW. Moje pytanie "dlaczego niektóre zależności brakuje?", Ma prostą odpowiedź (dostarczoną przez Brandona) "Brakuje ich, ponieważ są one dalej rozwiązywane w drzewie zależności". Dzięki! – Merc