【初心者向け】Node.jsでWeb開発を始める前に知っておくべき「Cannot find module 'express'」エラー対策
Node.js で開発中に "Error: Cannot find module 'express'" エラーが発生した場合、これは Express モジュールが正しくインストールされていないことを示しています。このエラーを解決するには、いくつかの方法があります。
原因
このエラーが発生する主な原因は以下の3つです。
- Express モジュールのインストール不足: Express モジュールがインストールされていない場合、このエラーが発生します。
- Node.js のバージョン: 使用している Node.js のバージョンが古すぎる場合、Express モジュールとの互換性がない可能性があります。
解決策
以下の手順でエラーを解決することができます。
Express モジュールのインストール
以下のコマンドを実行して、Express モジュールをインストールします。
npm install express
Node.js のバージョン確認
以下のコマンドを実行して、使用している Node.js のバージョンを確認します。
node -v
Node.js のバージョンが古すぎる場合は、最新バージョンにアップグレードする必要があります。
モジュールのパスの確認
以下のコード例のように、Express モジュールを正しくインポートしていることを確認します。
const express = require('express');
package.json ファイルに Express モジュールの依存関係が正しく記述されていることを確認します。
{
"dependencies": {
"express": "^4.17.1"
}
}
キャッシュのクリア
以下のコマンドを実行して、Node.js のモジュールキャッシュをクリアします。
npm cache clean --force
再インストール
上記の解決策を試しても問題が解決しない場合は、Express モジュールをアンインストールしてから再インストールしてみてください。
npm uninstall express
npm install express
上記以外にも、問題解決に役立つ情報として、以下の点があります。
- 使用しているエディタや IDE
- 発生しているエラーメッセージの詳細
- 既に試した解決策
補足
この回答は、Node.js 初心者向けに分かりやすく説明するために、簡略化されています。より詳細な情報は、上記の参考情報などを参照してください。
const express = require('express'); // Express モジュールのインポート
const app = express(); // Express アプリケーションの作成
const port = 3000; // ポート番号の設定
// GET リクエストへの処理
app.get('/', (req, res) => {
res.send('Hello from Express!'); // レスポンスの送信
});
// アプリケーションの起動
app.listen(port, () => {
console.log(`Server listening on port ${port}`); // サーバー起動メッセージの出力
});
- Express アプリケーションの作成
- GET リクエストへの処理
- アプリケーションの起動
詳細
require('express')
: Express モジュールをインポートします。const app = express()
: Express アプリケーションを作成します。const port = 3000
: ポート番号を 3000 に設定します。app.get('/', (req, res) => {})
: GET リクエストに対する処理を定義します。req
: リクエストオブジェクト
res.send('Hello from Express!')
: "Hello from Express!" という文字列をレスポンスとして送信します。app.listen(port, () => {})
: 指定されたポート番号でサーバーを起動します。console.log(
Server listening on port ${port});
: サーバー起動メッセージをコンソールに出力します。
このコードを実行するには
- Node.js をインストールします。
- 上記のコードを
app.js
などのファイルに保存します。 - 以下のコマンドを実行して、コードを実行します。
node app.js
ブラウザで http://localhost:3000
にアクセスすると、"Hello from Express!" という文字が表示されます。
このコードはあくまで基本的な例です。実際には、さまざまな機能を追加して、より複雑なアプリケーションを作成することができます。
Express を使用せずに Node.js で Web サーバーを作成する方法
HTTP モジュールを使用する
Node.js には組み込みの HTTP モジュールが用意されており、これを使用して基本的な Web サーバーを作成することができます。
const http = require('http');
const hostname = 'localhost';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello from Node.js!');
});
server.listen(port, hostname, () => {
console.log(`Server listening on port ${port}`);
});
このコードは、Express を使用せずに、基本的な "Hello World" アプリケーションを作成するものです。
Fastify は、Express よりも軽量で高速な Web フレームワークです。
const fastify = require('fastify');
const app = fastify();
app.get('/', (req, res) => {
res.send('Hello from Fastify!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
Koa を使用する
Koa は、もう 1 つの軽量で高速な Web フレームワークです。
const Koa = require('koa');
const app = new Koa();
app.use(ctx => {
ctx.body = 'Hello from Koa!';
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
Hapi を使用する
Hapi は、API 開発に特化した Node.js フレームワークです。
const Hapi = require('hapi');
const server = new Hapi.Server();
server.route({
method: 'GET',
path: '/',
handler: (request, reply) => {
reply('Hello from Hapi!');
}
});
server.listen(3000, () => {
console.log('Server listening on port 3000');
});
上記以外にも、Node.js で Web サーバーを作成するためのさまざまな方法があります。それぞれの方法には長所と短所があるため、自分のニーズに合った方法を選択することが重要です。
この回答は、Node.js で Web サーバーを作成するための代替方法の概要を提供するものです。それぞれの方法の詳細については、公式ドキュメントを参照してください。
node.js express