tutorial soljson smart remix org optimize online false español curso 59dbf8f1 javascript node.js module ecmascript-6

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í:

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.