找不到模块formidable – Node.js

我开始用node.j开发,遇到了关于使用模块“强大”的问题。

我有这个错误:

错误:无法find模块'强大'

这是使用'npm ls installed'安装的模块列表:

 ├─┬express@2.5.9 
 │├──connect@1.8.7 
 │├──mime@1.2.4 
 │├──mkdirp@0.3.0 
 │└──qs@0.4.2 
 ├──formidable@1.0.9 
 ├─┬node-inspector@0.1.10 
 │├──paperboy@0.0.3 
 │└─┬socket.io@0.8.7 
 │├──policyfile@0.0.4 
 │├──redis@0.6.7 
 │└─┬socket.io-client@0.8.7 
 │├──uglify-js@1.0.6 
 │├──websocket-client@1.0.0 
 │└──xmlhttprequest@1.2.2 
 ├─┬npm@1.1.21 
 │├──abbrev@1.0.3 
 │├──archy@0.0.2 
 │├──block-stream@0.5.5 
 │├──chownr@0.0.1 
 │├──fstream@0.1.18 
 │├─┬fstream-npm@0.0.6 
 ││└──fstream-ignore@0.0.5 
 │├──graceful-fs@1.1.8 
 │├──inherits@1.0.0 
 │├──ini@1.0.2 
 │├──lru-cache@1.0.5 
 │├──minimatch@0.2.2 
 │├──mkdirp@0.3.0 
 │├─┬node-gyp@0.4.1 
 ││├──ansi@0.0.4 
 ││└──glob@3.1.9 
 │├──node-uuid@1.3.3 
 │├──nopt@1.0.10 
 │├──proto-list@1.0.0 
 │├──read@0.0.2 
 │├──request@2.9.153 
 │├──rimraf@2.0.1 
 │├──semver@1.0.13 
 │├──slide@1.1.3 
 │├──tar@0.1.13 
 │├──uid-number@0.0.3 
 │└──which@1.5.5 
 └─┬socket.io@0.9.6 
   ├──policyfile@0.0.4 
   ├──redis@0.6.7 
   └─┬socket.io-client@0.9.6 
     ├─┬active-x-obfuscator@0.0.1 
     │└──zeparser@0.0.5 
     ├──uglify-js@1.2.5 
     ├─┬ws@0.4.14 
     │├──commander@0.5.2 
     │└──options@0.0.3 
     └──xmlhttprequest@1.2.2 

我补充说,这是产生这个错误的唯一模块。

另外,我真的不知道封装了一些模块的方式,看来npm是直接在我使用模块安装命令的目录下安装模块,我注意到在express / connect /模块在第一次安装。

你能给我更多关于模块安装树的信息吗?
感谢您的回复

干杯

要理解模块parsing,请查看模块文档 ,特别是从node_modules文件夹加载 。

例如,如果'/home/ry/projects/foo.js'的文件调用了require('bar.js') ,那么节点将按以下顺序查找以下位置:

  • /home/ry/projects/node_modules/bar.js
  • /home/ry/node_modules/bar.js
  • /home/node_modules/bar.js
  • /node_modules/bar.js

NPM利用这一点将模块安装到:

 ./node_modules/{module} 

所以,当你使用npm install formidable ,它会创build并将模块安装到:

 ./node_modules/formidable 

但是,这意味着只有当前目录下的脚本(包括子目录)才能成功使用require('formidable')

 ./foo.js ./lib/bar.js ./src/baz.js ./src/sub/qux.js 

但是,您可以将模块安装为“全局”,但是您必须使用-g--global明确要求它:

 npm install -g formidable 

那么,系统上的任何脚本都应该能够require('formidable')


至于树的输出,你当前有5个已安装的模块可以从当前目录中获得:

  • express
  • formidable
  • node-inspector
  • npm
  • socket.io

树中的所有其他东西都是这些模块的依赖关系及其依赖关系等的列表,但只有这5个才可用于脚本中的require(...)

接受的答案看起来非常全面和正确,但是这对我有效:

 npm install -d 

d代表依赖关系(我认为)