Dynamic import does not show location of SyntaxError
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- JavaScript
- Estrellas
- 122k
- Forks
- 37.3k
- Merge medio
- 4 d 2 h
- PR fusionados (30 d)
- 283
Descripción
// syntax-error.mjs
console.log([
'str1'
'str2'
]);
Perform a dynamic import with node -e "import('./syntax-error.mjs').catch(console.error)", the output does not help identify the error and could be seen by users as if node.js itself had a SyntaxError:
SyntaxError: Unexpected string
at Loader.moduleStrategy (internal/modules/esm/translators.js:83:18)
at async link (internal/modules/esm/module_job.js:37:21)
Now create and run a loader.mjs script:
import './syntax.mjs';
Running loader.mjs produces useful output:
file:///usr/src/npm/failures/syntax-error.mjs:3
'str2'
^^^^^^
SyntaxError: Unexpected string
at Loader.moduleStrategy (internal/modules/esm/translators.js:83:18)
I was not able to find a way to catch the error of a dynamic import and show the complete SyntaxError. Interestingly node --unhandled-rejections=strict -e "import('./syntax-error.mjs')" or running await import('./syntax-error.mjs') from node --experimental-repl-await both display the location of the SyntaxError.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce el caso de dynamic import con los comandos y el ejemplo syntax-error.mjs. Empieza siguiendo las rutas mostradas en internal/modules/esm/translators.js y internal/modules/esm/module_job.js, comparando dynamic import con static import y strict unhandled rejections. La tarea estará terminada cuando un SyntaxError de dynamic-import capturado incluya la ubicación del origen y el contexto del código problemático.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, nodejs
- Área
- backend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 48/100