web-dev-qa-db-ja.com

Nodejsモジュールが見つかりません

グローバルモジュールを使用しようとするとエラーが発生します。例:

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:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (C:\BitNami\wappstack\...\test\app.js)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.runMain (module.js:492:10)

エクスプレスコマンドをインストールしました。

npm install -g express

私のapp.js:

var express = require('express');

そして、Windows PowerShellまたはnode.jsコマンドプロンプトウィンドウを使用して実行します。

node app.js

何が間違っているのか本当にわからない、私はWindowsの環境変数について何かを読みます、これはできますか?

解決済み/更新

問題は、Windows環境変数がnpmフォルダー用に構成されていないことでした。 npmフォルダーを検索し、環境変数にパスを追加します。

20
Mateus Vahl

Expressをローカルにインストールする必要があります。

npm install express

それからあなたがしたようにそれを必要とします:

var express = require('express')
13
Hien Khieu

ここから引用するだけです:

https://www.npmjs.org/doc/files/npm-folders.html

  • Require()する場合は、locallyにインストールします。
  • コマンドラインで実行する場合は、グローバルにインストールします。
  • 両方が必要な場合は、両方の場所にインストールするか、npm linkを使用します。
14
Luca Reghellin

Windows7/x64で同じエラーが発生し、環境変数に以下を追加すると問題が解決しました。

NODE_PATH=C:\Users\[USERNAME]\AppData\Roaming\npm\node_modules

* [USERNAME]を実際のシステムユーザー名に置き換えます

13
Ovais

私はLinuxで作業していますが、Expressが必要な場合は、それがインストールされている場所への相対パスを使用してそうしています。

var express = require('./public/node_modules/express');

同じことがWindowsパスでも機能すると確信しています。より明示的にして絶対パスを宣言する場合は、スクリプトの実行元に関係なく、モジュールのロード元を常に正確に把握できるようにするための核となるオプションです。

明示的なパスを使用しても問題が解決しない場合、問題の原因がわかりません。 。 。

4
Brian

別のオプションは、npm install --save expressを実行することです

0