繁体   English   中英

找不到强大的模块-Node.js

[英]Cannot find module formidable - Node.js

我开始使用node.j进行开发,遇到了有关使用模块“ formidable”的问题。

我有这个错误:

错误:找不到模块“可成形”

这是使用'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.0.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.0.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 /中安装了强大的功能首次安装时使用的模块。

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

干杯

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

npm install -d

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

要了解模块分辨率,请查看模块文档 ,尤其是node_modules文件夹加载

例如,如果位于'/home/ry/projects/foo.js'的文件名为require('bar.js') ,则node将按以下顺序查找以下位置:

  • /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 ,它将创建模块并将其安装到:

./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

树中的所有其他内容都是这些模块的依赖性及其依赖性等的列表,但是脚本中的require(...)仅可使用这5个模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM