Cela marche:
import app from './../app.js';
Mais cela ne veut pas:
import app from path.join(process.cwd(), 'app');
Je suis en train:
SyntaxError: /path/file.js: Unexpected token (5:16)
> 5 | import app from path.join(process.cwd(), 'app');
| ^
Il est possible (et/ou comment) d'utiliser des chemins "dynamiques"? (ne codez pas en dur le chemin ou ne vous fiez pas aux chemins relatifs).
Non, ce n'est pas possible. Les modules ES6 doivent pouvoir résoudre leurs dépendances de manière statique, sans exécuter de code de module, afin que les instructions import
fonctionnent de manière fiable. Le spécificateur de module doit être un littéral de chaîne.
Cependant, le chargeur de modules de votre choix doit prendre en charge le chargement dynamique de modules avec des noms de variables. Cependant, vous ne pourriez pas obtenir un identifiant lié app
dans l'étendue de votre module (il ne peut pas le réexporter), il ne serait généralement disponible que dans un rappel.
Les importations ES6 sont déclaratives et destinées à une analyse statique. Ils ne peuvent pas être dynamiques.
En règle générale, si certaines importations conditionnelles étaient importées, il incomberait à la logique de résolution de chemin sous-jacent de décider du module à charger en fonction d'un chemin statique.
Que vous utilisiez le chargeur de module async plutôt que les importations déclaratives.