loopbackio / loopbackio/loopback-next

[BOOT] Not possible to import ESM project files

Abierto
#10,335 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

bug
Lenguaje dominante
TypeScript
Estrellas
5.1k
Forks
1.1k
Merge medio
2 d 21 h
PR fusionados (30 d)
27

Descripción

Describe the bug

There is a problem bootstrapping applications created in the ESM format.

When loopback tries to load all project files (controllers, models, services, etc), it uses utility function loadClassesFromFiles from packages/boot/src/booters/booter-utils.ts which is using CommonJs require() to import projects files. CommonJs cannot require ESM files, only by dynamic importing them using import().

As a result, the similar error appears on startup:

image
Logs

No response

Additional information

The issue is reproduced in the ToDo example:

  1. Clone repo, install deps.
  2. Navigate to examples/todo.
  3. Run with npm start
Reproduction

https://github.com/alexbal7/loopback-next/tree/fix/esm-files-import

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza en packages/boot/src/booters/booter-utils.ts, centrándote en loadClassesFromFiles y en su uso al iniciar la aplicación examples/todo. Reproduce el problema ejecutando npm start desde examples/todo después de instalar las dependencias. Se considera terminado cuando un proyecto con formato ESM puede iniciarse y cargar sus controladores, modelos, servicios y otros archivos del proyecto sin el error de inicio indicado.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
node.js, typescript
Área
backend
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.