1. ホーム
  2. javascript

[解決済み] requireが定義されていない?Node.js

2023-01-05 06:38:12

質問

Node.jsを使い始めたばかりです。私の app/js ファイルで、私はこのようなことをやっています。

app.js

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Am I really running a server?!');
}).listen(8080, '127.0.0.1');

console.log('running server!');

ターミナルで node app.js を実行すると、コンソールが吐き出すのは 'running server!' と表示されますが、ブラウザでは Uncaught ReferenceError: require is not defined .

ターミナルでは正常に動作するのに、ブラウザでは動作しないのはなぜか、どなたか説明してください。

私はノードの http-server を使って私のページを提供しています。

どのように解決するのですか?

ターミナルでは、nodeアプリケーションを実行し、それがスクリプトを実行しています。 これは、ブラウザで直接スクリプトを実行するのとは非常に異なる実行環境です。 Javascript 言語はほぼ同じですが (Chrome ブラウザーを実行している場合は V8 とも)、利用可能なライブラリなどその他の実行環境は同じではありません。

node.jsは、V8 Javascriptエンジンと多くのサーバーサイドライブラリを組み合わせた、サーバーサイドのJavascript実行環境です。 require() は、node.jsが環境に追加するそのような機能の一つです。 つまり、ターミナルでnodeを実行すると、その環境には require() .

require() は、ブラウザに組み込まれた機能ではありません。 それはnode.js特有の機能であり、ブラウザのものではありません。 ですから、ブラウザにあなたのスクリプトを実行させようとしても、ブラウザには require() .

node.jsのコードのいくつかの形式をブラウザで実行する方法があります(すべてではありません)。 例えば、ブラウザの代用品として require() のブラウザ代替品を入手することができます(同一ではありませんが)。

しかし、ブラウザの中でウェブサーバーを実行することはありません。


あなたは以下のものに興味があるかもしれません。 ブラウザ化 を使って、ブラウザ上でノードスタイルモジュールを使うことができます。 require() ステートメントを使用しています。