javascript - soljson - Importación de módulos utilizando la sintaxis ES6 y la ruta dinámica
smart contracts ethereum (2)
Esta pregunta ya tiene una respuesta aquí:
- ¿Nombre de importación variable ES6 en node.js? 9 respuestas
Esto funciona:
import app from ''./../app.js'';
Pero esto no:
import app from path.join(process.cwd(), ''app'');
Me estoy poniendo:
SyntaxError: /path/file.js: Unexpected token (5:16)
> 5 | import app from path.join(process.cwd(), ''app'');
| ^
¿Es posible (y / o cómo) usar rutas "dinámicas"? (sin codificar la ruta o confiar en rutas relativas).
Las importaciones de ES6 son declarativas y están destinadas al análisis estático. No pueden ser dinámicos.
En general, la expectativa sería que si tuviera algunas importaciones condicionales, sería responsabilidad de la lógica de resolución de ruta subyacente decidir qué módulo cargar en función de una ruta estática.
Eso o usaría el cargador de módulo asíncrono en lugar de las importaciones declarativas.
No, esto no es posible.
Los módulos ES6 necesitan poder resolver estáticamente sus dependencias, sin ejecutar el código del módulo, para que las declaraciones de
import
funcionen de manera confiable.
El especificador del módulo debe ser un literal de cadena.
Sin embargo, el cargador de módulos que elija debe admitir la carga dinámica de módulos con nombres de variables.
Sin embargo, no podría obtener un identificador de
app
enlazado en el alcance de su módulo (y no puede volver a exportarlo), por lo general, solo estaría disponible en una devolución de llamada más o menos.