我用节点编写了一个简单的应用程序 这取决于快递,mongodb和猫鼬(简单).所以,我创建了一个名为的文件package.json
并将其放入其中:
{
"name": "booking-dojo",
"description": "Booking dojo app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.x",
"mongodb": "*",
"mongoose": "*"
}
}
Run Code Online (Sandbox Code Playgroud)
然后我跑了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
Run Code Online (Sandbox Code Playgroud)
我为此感到困惑,因为我知道这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
Run Code Online (Sandbox Code Playgroud)
所以,express
已经成长了很多.它看起来npm install
只是加载子模块的一些依赖项.
有人可以对此有所了解吗?为什么缺少某些依赖项?难道我做错了什么?(可能)
谢谢!
芝加哥商业交易所.
Pet*_*ons 39
你至少对2分感到困惑.
首先,express不依赖于jade,你可以通过阅读node_modules/express/package.json
文件看到:
"dependencies": {
"connect": "2.4.2",
"commander": "0.6.1",
"range-parser": "0.0.4",
"mkdirp": "0.3.3",
"cookie": "0.0.4",
"crc": "0.2.0",
"fresh": "0.1.0",
"methods": "0.0.1",
"send": "0.0.3",
"debug": "*"
}
Run Code Online (Sandbox Code Playgroud)
但是,Express可以使用 jade(如果可用)以及许多其他模板引擎.所以要修复这个列表jade作为package.json文件中的依赖项,你会没事的.
其次,npm只安装节点包,而不是像mongodb这样的第三方.您需要安装的MongoDB和任何其他依赖关系都没有用其他的方法(NPM模块apt-get
,yum
手动安装,等等).
所以npm DOES递归安装依赖项,但只有npm模块.
答案是布兰登在对另一个答案的评论中提供的:
"需要注意的另一件事是,如果一个包依赖于一个可以在依赖链中进一步解析的模块,它会.例如,因为你的package.json中有mongodb,所以Mongoose不需要自己安装mongodb. - Brandon Tilley 2天前
谢谢布兰登!(这就是答案......)
归档时间: |
|
查看次数: |
67811 次 |
最近记录: |