私は最初の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 [email protected] 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 [email protected] No repository field.
npm WARN package.json [email protected] No readme data.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] 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 [email protected] No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json [email protected] 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 [email protected] 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
[email protected] C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
いくつかの情報:
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 [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── [email protected]
C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)
どうすればこの問題を解決できますか? (MUST-g
なしでインストールしますか?)
Expressをアプリケーションのコンテキスト(node_modules
フォルダ)にローカルにインストールする必要があります。
$ npm install express
その理由は、アプリケーションは常にローカルのコンテキストで依存関係を探すためです。グローバルインストールは、単体テストランナーやブートストラッププログラムなど、システム全体で利用可能なバイナリをセットアップするためだけのものです。
Expressでは、グローバルにインストールすると、アプリケーションをブートストラップできるexpress
というバイナリが得られます。詳細については、次のように入力してください。
$ express --help
それで、あなたの最後の質問に答えるために、YES、あなたは-g
なしでそれをインストールする必要があります。
私のためにそれは次のように--saveオプションを使用してローカルにエクスプレスをインストールしたときにうまくいきました:
$ npm install express --save
express
モジュールをインストールしていないか確認して、以下のコマンドを使用してください。
npm install express
node_modules
ディレクトリが別の場所にある場合は、NODE_PATH
環境変数を設定します。
set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%
Goloは解決策をよく説明しています、しかし私は明確化を加えるかもしれません:
ノードモジュールがインストールされていることがあります
/usr/local/lib/node_modules
そして、あなたが起動すると、blabla.jsモジュールが検索されます。
/lib
そのため、解決策はシンボリックリンクを作成することです。
Sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules
あなたの場合あなたの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
を実行します。それは今動作するはずです!!!!
UbuntuベースのOSでは、試すことができます
Sudo apt-get install node-express
それはミントで私のために働いて
システムにノードがインストールされている場合、Windows用に次のように使用して、プロジェクト用にExpressをローカルにインストールします。
npm install express
または
npm install express --save
あなたはそれを使用してグローバルアクセスを与えることができます:
npm install -g express --save
モジュールがインストールされているが、私はvscodeでこのエラーを抱えていた。 TypeScriptとexpressを使っています。 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"
]
}
あなたのアプリケーションディレクトリに行き、下記のコマンドを使用してexpressモジュールをインストールしてくださいnpm install express --saveそして下記のコマンドを使用してall installモジュールをリストしてくださいnpm lsあなたは全部見るでしょうローカルインストールモジュール.
ハードディスクにsample1というフォルダを1つ作成し、コマンドプロンプトのタイプに移動します。
npm install express
npmインストール翡翠
npm install socket.io
そして、あなたがアプリケーションを作成しているものは何でもsample1フォルダに保存します
それを試してみてください...
私は同じ問題にぶつかりました。私はグローバルに/ usr/local/bin /にインストールしました。 「npm install」を実行したときに、expressがローカルディレクトリのnode_modulesに作成されていませんでした。
これは私にとって役に立ちましたMacOS X Sierra