JavaScript は ES6 モジュールの導入により大幅に変更され、開発者にコードを整理して再利用するための最新かつ効率的な方法を提供します。ただし、これらのモジュールを使用するときに発生する一般的なエラーの 1 つは、恐ろしいものです。「モジュールの外では import ステートメントを使用できません。」 この問題は、特に ES6 モジュールを初めて使用する開発者にとってイライラする可能性があります。このブログでは、このエラーの意味、発生理由、解決方法について詳しく説明します。
エラーは何を意味しますか?
デフォルトで ES6 モジュールをサポートしていない環境で JavaScript が ES6 インポート ステートメントを解釈しようとすると、「モジュールの外で import ステートメントを使用できません」 エラーが発生します。
このエラーを理解するには、ES6 モジュール と CommonJS モジュール を区別する必要があります:
このエラーは通常、環境 (Node.js やブラウザなど) が ES6 モジュールを処理するように設定されていないか、ES6 モジュールを処理するように正しく構成されていないために発生します。
エラーの一般的な原因
エラーを解決するには、その根本原因を理解することが重要です。最も一般的な理由は次のとおりです:
エラーの解決方法
環境とユースケースに応じて、「モジュール外の import ステートメントは使用できません」 エラーを解決する方法がいくつかあります。
1. package.json
に "type": "module" を追加しますプロジェクトで ES6 モジュールを使用することを Node.js に明示的に伝えるには、package.json ファイルに次の行を追加します。
json
コードをコピー
{
"タイプ": "モジュール"
}
この簡単な変更により、Node.js はプロジェクト内の .js ファイルを ES6 モジュールとして扱うようになります。
2. .mjs ファイル拡張子を使用します
または、.mjs 拡張子を使用するように JavaScript ファイルの名前を変更します。 Node.js は、デフォルトで .mjs ファイルを ES6 モジュールとして扱います。
3.環境を更新します
最新バージョンの Node.js または ES6 モジュールをサポートするその他のツールを使用していることを確認してください。次のコマンドを実行して、Node.js のバージョンを確認します:
バッシュ
コードをコピー
ノード -v
古い場合は、最新バージョンに更新してください。
4. Babel
を使用したコードのトランスパイル古い環境やブラウザをサポートする必要がある場合は、Babel を使用して ES6 モジュール コードを CommonJS にトランスパイルできます。 Babel をインストールし、互換性を確保するために必要なプリセットを使用して構成します。
バッシュ
コードをコピー
npm install @babel/core @babel/cli @babel/preset-env --save-dev
次の構成で .babelrc ファイルを作成します:
json
コードをコピー
{
"プリセット": ["@babel/preset-env"]
}
Babel を実行してコードをトランスパイルします:
バッシュ
コードをコピー
npx babel src --out-dir dist
5.バンドラー構成を確認してください
Webpack や Rollup などのバンドラーを使用している場合は、モジュール設定が正しく構成されていることを確認してください。たとえば、Webpack では、output.libraryTarget オプションを module:
に設定します。JavaScript
コードをコピー
module.exports = {
出力: {
libraryTarget: 'モジュール'
}、
実験: {
outputModule: true
}
};
シナリオの例と修正
このエラーに対処する方法をよりよく理解するために、いくつかの実践的な例を見てみましょう。
例 1: Node.js でインポートを使用する
Node.js で次のコードを実行しようとします:
JavaScript
コードをコピー
「express」からエクスプレスをインポートします。
const app =express();
package.json に "type": "module" が含まれていない場合、エラーがスローされます。これを修正するには、package.json に次のコードを追加します:
json
コードをコピー
{
"タイプ": "モジュール"
}
例 2: 古いブラウザでインポートを実行する
ES6 インポートをネイティブにサポートしていない古いブラウザで使用しようとしました。ここでの解決策は、Babel を使用してコードをトランスパイルし、Webpack のようなバンドラーを使用してブラウザーの互換性のためにそれをバンドルすることです。
デバッグのヒント
上記の修正を試してもまだエラーが発生する場合は、次の追加のデバッグ戦略を検討してください。
モジュールを使用するためのベスト プラクティス
このエラーの発生を回避し、開発をスムーズに行うには、次のベスト プラクティスに従ってください。
結論
「モジュール外で import ステートメントを使用できません」 エラーはよくある問題ですが、JavaScript 開発者にとっては簡単に解決できます。 Node.js、ブラウザ、ビルド ツールのいずれを使用している場合でも、原因を理解し、適切な修正を適用することで、ES6 モジュールをシームレスに操作できるようになります。このガイドで説明されている手順とベスト プラクティスに従うことで、このエラーを回避し、JavaScript プロジェクトの効率を向上させることができます。
以上がモジュール外でインポート ステートメントを使用できない: この一般的なエラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。