【发布时间】:2016-07-26 20:08:21
【问题描述】:
我使用 node.js 编写了一个简单的应用程序。这取决于 express、mongodb 和 mongoose(简单)。
因此,我创建了一个名为 package.json 的文件并将其放入其中:
{
"name": "booking-dojo",
"description": "Booking dojo app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.x",
"mongodb": "*",
"mongoose": "*"
}
}
然后我运行npm install,期望 npm 安装这些模块和它们的依赖项。
结果令人失望:
booking-dojo@0.0.1 /home/merc/Synced/Development/Bookings/app/server
├─┬ express@3.0.0rc3
│ ├── commander@0.6.1
│ ├─┬ connect@2.4.3
│ │ ├── bytes@0.1.0
│ │ ├── formidable@1.0.11
│ │ ├── pause@0.0.1
│ │ └── qs@0.4.2
│ ├── cookie@0.0.4
│ ├── crc@0.2.0
│ ├── debug@0.7.0
│ ├── fresh@0.1.0
│ ├── methods@0.0.1
│ ├── mkdirp@0.3.3
│ ├── range-parser@0.0.4
│ └─┬ send@0.0.3
│ └── mime@1.2.6
├─┬ mongodb@1.1.4
│ └── bson@0.1.1
└─┬ mongoose@3.0.3
├── hooks@0.2.1
└── ms@0.1.0
我对此感到困惑,因为我知道express 需要jade(以及更多),而mongoose 需要mongodb。
如果我进入node_modules/jade 并运行npm install,主树的结果会非常不同:
booking-dojo@0.0.1 /home/merc/Synced/Development/Bookings/app/server
├─┬ express@3.0.0rc3
│ ├── commander@0.6.1
│ ├─┬ connect@2.4.3
│ │ ├── bytes@0.1.0
│ │ ├── formidable@1.0.11
│ │ ├── pause@0.0.1
│ │ └── qs@0.4.2
│ ├─┬ connect-redis@1.4.1
│ │ └─┬ redis@0.7.2
│ │ └── hiredis@0.1.14
│ ├── cookie@0.0.4
│ ├── crc@0.2.0
│ ├── debug@0.7.0
│ ├── ejs@0.8.2
│ ├── fresh@0.1.0
│ ├── github-flavored-markdown@1.0.1
│ ├─┬ hjs@0.0.4
│ │ └── hogan.js@2.0.0
│ ├─┬ jade@0.27.2
│ │ └── mkdirp@0.3.0
│ ├── methods@0.0.1
│ ├── mkdirp@0.3.3
│ ├─┬ mocha@1.4.0
│ │ ├── diff@1.0.2
│ │ ├── growl@1.5.1
│ │ └─┬ jade@0.26.3
│ │ └── mkdirp@0.3.0
│ ├── range-parser@0.0.4
│ ├─┬ send@0.0.3
│ │ └── mime@1.2.6
│ ├── should@1.1.0
│ ├─┬ stylus@0.29.0
│ │ └── cssom@0.2.5
│ └─┬ supertest@0.0.1
│ └─┬ superagent@0.5.0
│ ├── emitter-component@0.0.1
│ ├── formidable@1.0.9
│ ├── mime@1.2.5
│ └── qs@0.4.2
├─┬ mongodb@1.1.4
│ └── bson@0.1.1
└─┬ mongoose@3.0.3
├── hooks@0.2.1
└── ms@0.1.0
所以,express 已经增长了很多。看起来npm install 只加载了一些子模块的依赖项。
有人可以解释一下吗?为什么缺少一些依赖项?难道我做错了什么? (可能)
谢谢!
默克。
【问题讨论】: