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 ni confiar en rutas relativas).
No, esto no es posible. Los módulos ES6 deben 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 de módulo debe ser un literal de cadena.
Sin embargo, el cargador de módulos de su elección debe admitir la carga dinámica de módulos con nombres de variables. Sin embargo, no podría obtener un identificador de app vinculado 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.
Las importaciones de ES6 son declarativas y están pensadas para el 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 alguna ruta estática.
Eso o usaría el cargador de módulos asíncronos en lugar de las importaciones declarativas.