この記事では、このエラーが発生する理由とその修正方法について詳しく説明します。
JavaScript/Node.js の「require が定義されていません」エラーを解決するにはどうすればよいですか?
「require が見つかりません」という参照エラーは、Node.js 環境ではなく Web ブラウザーで実行されるはずの JavaScript ファイル内に require() 関数が見つかった場合に発生します。
require() 関数とは何ですか?
require() 関数はグローバル スコープを持ち、Node.js によって提供されます。 Node.js アプリケーションにモジュールをロードして実行します。多くのブラウザは Node.js をサポートしていないため、require() 機能は使用できません。
このエラーはいつ発生しますか?
このエラーは通常、JavaScript が Node.js とともに両方のブラウザーで使用されている場合に発生します。エラーは次の 3 つの方法で発生する可能性があります。
- ブラウザ環境でrequire()関数を使用した場合。
- Node.js および package.json ファイルで require() 関数が使用される場合、タイプは「module」に設定されます。
- Node.js で require() 関数が使用される場合、ファイルの拡張子は .mjs になります。
const という構文を使用する myFile = require(‘./my-file’) 」を Web ベースの環境で実行すると、次のようなエラーがスローされます。
このエラーを解決するためのさまざまな解決策について説明します。
ケース1:ブラウザ環境のエラー
require() 関数は特に Node.js で機能します。ほとんどのブラウザは Node.js と互換性があるため、require() 機能をサポートしません。 ES6 モジュールのインポート エクスポート モジュールは、「ReferenceError require is not generated」エラーを解決します。これを行う方法を示すコードの例を次に示します。
DOCTYPE html >< 体 >
< スクリプトの種類 = 「モジュール」 送信元 = 「インデックス.js」 > 脚本 >
< スクリプトの種類 = 「モジュール」 送信元 = 「ファイル.js」 > 脚本 >
体 >
html >
Index.js は最初に読み込まれ、その機能を file.js で利用できるようになります。
Index.js ファイル
Index.js は、関数積と変数 x および y を定義します。
エクスポート機能製品 ( a、b ) {戻る ある * b ;
}
輸出 定数 = 10 ;
輸出 定数 そして = 「テイラー」
ファイル.js
Index.js ファイルの機能は、file.js という名前の他の js ファイルで使用できます。 File.js は次のようになります。
輸入 { 製品、x、y } から 「./index.js」 ;コンソール。 ログ ( 製品 ( 10 、 5 ) ) ; // 50を表示します
コンソール。 ログ ( バツ ) ; // 10を表示します
コンソール。 ログ ( そして ) ; // 「TAYLOR」と表示されます
出力
次の出力は、ES6 インポート エクスポート モジュールを使用して、ブラウザ環境での「require が定義されていません」エラーを削除する方法を示しています。
ケース 2: Node.js での作業中のエラー
package.json ファイルで、値 module を使用して type プロパティを設定すると、このエラーが発生します。また、拡張子が .mjs のファイルで require() 関数が使用されている場合にも発生する可能性があります。
このエラーは、モジュールに設定されている type プロパティを削除すると削除でき、拡張子が .mjs のファイルはすべて .js に名前変更されます。
//パッケージ.json{
// require() を使用するためにモジュールに設定されている type プロパティを削除します
'タイプ' : 「モジュール」 、
}
Index.js ファイル
Index.js ファイルは、関数「product」と、変数スコープを持つ変数 x および y を定義します。 Index.js ファイルは次のようになります。
機能製品 ( a、b ) {戻る ある * b ;
}
グローバル。 バツ = 13 ;
グローバル。 そして = '迅速' ;
モジュール。 輸出 = {
製品、
} ;
ファイル.js
require() キーワードを使用して、JS ファイルindex.js から関数積を取得します。 file.js ファイルは次のようになります。
定数 { 製品 } = 必要とする ( 「./index.js」 ) ;コンソール。 ログ ( 製品 ( 10 、 9 ) ) ; // 90が表示されます
コンソール。 ログ ( バツ ) ; // 13 が表示されます
コンソール。 ログ ( そして ) ; // 「swift」と表示されます
出力
出力には、package.json ファイルから module に設定されたタイプのプロパティを削除することで、「Require is not found」エラーを解決する方法が表示されます。
覚えておくべきこと
- モジュールをインポートするための ES6 モジュール構文では、モジュール ファイルの拡張子を明確にする必要があります。 JavaScript が適切に処理するには、ファイルの種類を認識する必要があります。
- ES6 モジュールは require() 関数と同時に使用できません。
結論
ブラウザで ES6 モジュール構文を使用すると、「要件が定義されていない」という問題が解決されます。そうでない場合は、コード スニペットを Node.js で実行する必要があります。このエラーは、ブラウザで require() 関数が使用されるときに発生します。この記事では、「要件が定義されていない」問題を解決する方法を例を挙げて説明しました。