これは動作します:
import app from './../app.js';
しかし、これはそうではありません:
import app from path.join(process.cwd(), 'app');
私が取得しています:
SyntaxError: /path/file.js: Unexpected token (5:16)
> 5 | import app from path.join(process.cwd(), 'app');
| ^
「動的」パスを使用することは可能ですか(および/またはどのように)? (パスをハードコーディングしたり、相対パスに依存しない)。
いいえ、これは不可能です。 ES6モジュールは、import
ステートメントが確実に機能するように、モジュールコードを実行せずに、依存関係を静的に解決できる必要があります。モジュール指定子は文字列リテラルでなければなりません。
ただし、選択したモジュールローダーは、変数名を持つモジュールの動的ロードをサポートする必要があります。ただし、モジュールスコープでバインドされたapp
識別子を取得することはできません(再エクスポートできません)。通常、コールバックなどでのみ使用できます。
ES6インポートは宣言型であり、静的分析を目的としています。動的にすることはできません。
一般に、条件付きインポートがある場合、静的パスに基づいてロードするモジュールを決定するのは、基礎となるパス解決ロジックの責任であると予想されます。
または、宣言的なインポートではなく、非同期モジュールローダーを使用します。