Estoy usando module-alias para mi proyecto Node.js + Express.js, ejecutándolo con Babel para compatibilidad con ES2015.
La aplicación funciona perfectamente cuando se inicia con babel-node , sin embargo, si primero la construyo con babel (de package.json ):
"build": "babel ./app --out-dir ./app_dist"Y luego comienza:
"start": "node ./app_dist/bin/www" Obviamente, no puede encontrar la ruta correcta especificada con module-alias. En lugar de buscar en app_dist , Node.js busca import en app , encuentra la directiva de import ES2015 que no entiende y lanza:
SyntaxError: Importación de token inesperada
Si cambio los alias antes del inicio de esa compilación, de app a app_dist , funciona, pero la pregunta es, ¿cómo mapear esos alias (o cómo usar una configuración diferente de _moduleAliases ) para que la aplicación resuelva las rutas correctamente en desarrollo y producción?
¿Tal vez hay otra forma de alias de módulos con tal pila? Gracias por adelantado.
Solución encontrada para este problema.
Para establecer los alias de ruta relativos con module-alias , no deben definirse en package.json , sino en un archivo JavaScript dentro del directorio raíz que se transpilará con Babel.
En mi caso, creando un script aliases.js dentro del directorio de config como este:
import path from 'path'; import moduleAlias from 'module-alias'; moduleAlias.addAlias('@root', path.resolve(__dirname, '../../'));Dará como resultado que la ruta se resuelva en relación con el directorio de trabajo actual, resolviendo el problema descrito.