8

node.jで開発を始めていますが、モジュール「formidable」の使用に関する問題が発生しています。

このエラーがあります:

エラー:モジュール'formidable'が見つかりません

'npmlsinstalled'を使用してインストールされたモジュールリストは次のとおりです。

├─┬express@2.5.9
│├──connect@1.8.7
│├──mime@1.2.4
│├──mkdirp@0.3.0
│└──qs@0.4.2
├──手ごわい@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/に手ごわいものがインストールされていることに気付きました。最初のインストールでモジュール。

モジュールのインストールツリーについて詳しく教えてください。
返信ありがとうございます

乾杯

4

2 に答える 2

7

受け入れられた答えは非常に包括的で正しいように見えますが、これは私にとってはうまくいきました:

npm install -d

d は依存関係を表します (私が思うに)

于 2012-07-27T06:23:43.190 に答える
3

モジュールの解決を理解するには、Modules documentation、特にLoading from node_modulesFoldersを参照してください。

たとえば、 のファイルが'/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 つだけです。

于 2012-05-06T03:11:55.490 に答える