Node.jsエラー:モジュールエクスプレスが見つかりません


145

最初のnode.jsアプリを作成しましたが、エクスプレスライブラリが見つかりません。

C:\ChatServer\Server>node server.js

module.js:340
    throw err;
          ^
Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\ChatServer\Server\server.js:6:9)
    at Object.<anonymous> (C:\ChatServer\Server\server.js:25:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

しかし、Expressは(-gキー付きで)インストールされます。

C:\ChatServer\Server>npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm WARN package.json range-parser@0.0.4 No repository field.
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.6.5
npm http GET https://registry.npmjs.org/send/0.1.1
npm http GET https://registry.npmjs.org/formidable/1.0.14
npm http GET https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/bytes/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/bytes/0.2.0
npm WARN package.json bytes@0.2.0 No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json pause@0.0.1 No repository field.
npm http 304 https://registry.npmjs.org/formidable/1.0.14
npm http 304 https://registry.npmjs.org/qs/0.6.5
npm http 304 https://registry.npmjs.org/send/0.1.1
npm http 304 https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
C:\Users\Dmitry\AppData\Roaming\npm\express -> C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express\bin\express
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
express@3.2.6 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)

いくつかの情報:

C:\ChatServer\Server>npm --version
1.2.24

C:\ChatServer\Server>node --version
v0.10.9

C:\ChatServer\Server>npm --version
1.2.24

C:\ChatServer\Server>npm ls -g installed express
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── express@3.2.6


C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)

この問題を解決するにはどうすればよいですか?(MUST私はせずにそれをインストール-g?)




回答:


275

Expressをアプリケーションのコンテキスト(node_modulesフォルダー)にローカルにインストールする必要があります。

$ npm install express

これは、アプリケーションが常にローカルコンテキストで依存関係を探すためです。グローバルインストールは、単体テストランナーやブートストラップなどのシステム全体で利用可能なバイナリをセットアップするためだけのものです。

Expressを使用すると、グローバルにインストールするとexpress、アプリケーションをブートストラップできるバイナリが得られます。詳細については、次を入力してください

$ express --help

したがって、最後の質問に答えるには、はい、なしでインストールする必要があります-g


1
これも私を助けました。私はwinstonグローバルにインストールしましたが、通常のユーザーとしてアプリを起動したときに何らかの理由で機能しましたが、アプリとシステム初期化スクリプトを起動すると機能しませんでした。winstonをappディレクトリにローカルにインストールして(そしてpackage.jsonに追加して)、これを修正しました。
trusktr 14

3
cdを使用してグローバルにインストールされた依存関係をプロジェクトのルートディレクトリにリンクし、「npm link <some dependency name>」を使用できます
khoi nguyen

11
アプリの作成後にnpmをインストールします。すべての依存関係をインストールします。

これは本当に助けてくれてありがとう。node_modulesフォルダーに移動してExpressをインストールすると問題が解決しました
Megha

@Golo Rodenあなたの答えをコード化して私はあなたのソリューションで試しましたが、それはエラーをスローしています: 'npm ERR!tar.unpack untarエラーC:\ Users \ VV \ AppData \ Roaming \ npm-cache \ express \ 4.14.0 \ package.tgz npm ERR!Windows_NT 6.3.9600 npm ERR!argv "C:\\ Program Files \\ nodejs \\\\ node.exe" "C:\\ Program Files \\ nodejs \\ node_modules \\ npm \\ bin \\ npm-cli.js" "install" "エクスプレス」
VjyV 2016年

20

私にとっては、次のように--saveオプションを使用してExpressをローカルにインストールすると機能しました:

$ npm install express --save

12

expressモジュールをインストールしていないかどうかを確認するには、次のコマンドを使用します。

 npm install express

node_modulesディレクトリが別の場所にある場合は、NODE_PATH環境変数を設定します。

 set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%

npm install express後のWindows 10では、ノードパスに自動的に追加できません。ノードモジュールを手動でノードパスに追加する必要があります。
ジェーン

5

ゴロは解決策をうまく説明していますが、私は明確化を追加するかもしれません:
時々ノードモジュールがインストールされています

/usr/local/lib/node_modules

ノードを起動すると、blabla.jsモジュールが検索されます

/lib

したがって、解決策はシンボリックリンクを作成することです。

sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules

1
より簡単な方法-> npm link <モジュール>
Amit G

4

あなたの場合、expressモジュールはにインストールされてC:\Users\Dmitry\AppData\Roaming\npm\node_modules\expressいますが、このモジュールをプロジェクトディレクトリに配置する必要があります。したがって、expressモジュールフォルダーのファイルC:\Users\Dmitry\AppData\Roaming\npm\node_modules\を次のようにプロジェクトディレクトリにコピーする必要がありますC:\ChatServer\Server\node_modules。プロジェクトフォルダーに「node_modules」という名前のフォルダーがない場合は、まずそれを作成し、これらのファイルをこのフォルダーに貼り付けます。この方法は私のWindows PCで私のために働いた。ノードサーバーを再起動し、もう一度コマンドnodeを実行しますC:\ChatServer\Server>node server.js。これで動作するはずです!!!!


Windows 10でも動作しました!
Victor Michael Kosgei


3

システムにノードをインストールした場合、Windowsの場合は以下を使用して、プロジェクトのExpressをローカルにインストールします。

npm install express

または

npm install express --save

次のコマンドを使用して、グローバルアクセスを与えることができます。

npm install -g express --save

2

vscodeでこのエラーが発生しましたが、モジュールはインストールされています。私はtypescriptを使って表現しています。server.tsファイルのすべての輸入は波線下線を赤くしていました。不正なtsconfig.jsonファイルがあったことがわかりました。

{
    "compileOnSave": false,
    "compilerOptions": {
        "module": "commonjs", // Previously this value was `es6`
        "target": "es6",
        "allowSyntheticDefaultImports": true,
        "baseUrl": "public",
        "sourceMap": true,
        "outDir": "dist",
        "jsx": "react",
        "strict": true,
        "preserveConstEnums": true,
        "removeComments": true,
        "noImplicitAny": true,
        "allowJs": true
    },
    "exclude": [
        "node_modules",
        "build"
    ]
}

1

ハードディスクにフォルダーを1つ作成します(例:sample1)。コマンドプロンプトタイプ:cdに移動し、sample1フォルダーのパスを指定して、すべてのモジュールをインストールします...

npm install express

npmジェイドをインストール

npm install socket.io

そして、あなたが作成しているアプリケーションは何でもsample1フォルダに保存します

それを試してみてください...


1

アプリケーションディレクトリに移動し、以下のコマンドnpm install express --saveを使用してExpressモジュールを インストールしてから、以下のコマンドnpm ls を使用してすべてのインストールモジュールを一覧 表示すると、すべてのローカルインストールモジュールが表示されます


1

Expressをグローバルにインストールしてもローカルプロジェクトでは機能しないため、使用するにはローカルにインストールする必要があります。

npm install express

これがうまくいくことを願っています

ありがとうございました


0

私は同じ問題にぶつかった。/ usr / local / bin /にグローバルにExpressをインストールしました。「npm install」を実行すると、ローカルディレクトリのnode_modulesにExpressが作成されませんでした。

  1. $ HOMEにファイル名.npmrcがあるかどうかを確認します
  2. 'global = true'の場合は、 'global = false'に変更します。
  3. 次に、アプリケーションディレクトリで「npm install」を実行します。おそらく、アプリケーションディレクトリ内のnode_modules(ローカル)にインストールされているすべてのパッケージ依存モジュールを取得する必要があります。

0
  • sudo brewアンインストールノード
  • 醸造の更新
  • 醸造アップグレード
  • 醸造クリーンアップ
  • 醸造インストールノード
  • sudo chown -R $(whoami)/ usr / local
  • brew link-ノードを上書き
  • sudo brew postinstallノード

これはMacOS X Sierraで私のために働いた


0

これを共有したことを誇りに思いませんが、私の場合、

 require('express.handlebars')

 //and the correct form is:
 require('express-handlebars'); //Use dash instead.

0

この本の例 "Kubernetes Up&Running"でも同じエラーが発生しました。Expressを「手動」で
インストールすることを提案する多くの回答が見られますが、最善の解決策であるとは思いません。 私たちはpackage.json(ログで確認できます)を使用しており、アプリを構築する正しい方法が実行されているためpackage.jsonファイルに明示的な依存関係を追加しました。
npm install

 "dependencies": {
    "express": "^4.17.1"
}

現在のバージョンはで取得しnpm search expressます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.