-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BOOT] Not possible to import ESM project files #10335
Comments
Since loopback supports Node 18+ I believe bootstrap logic can be changed to support dynamic imports. If there is any concerns regarding that, please let me know. Otherwise I will put a draft PR for this change :) |
Thanks for raising this! I believe there were discussions on migrating the whole LoopBack project to ESM imports. However, we have not gotten around to doing it. If the PR is backwards-compatible with CommonJS-like imports, then we'd be happy to review it. |
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
frompackages/boot/src/booters/booter-utils.ts
which is using CommonJsrequire()
to import projects files. CommonJs cannot require ESM files, only by dynamic importing them usingimport()
.As a result, the similar error appears on startup:
Logs
No response
Additional information
The issue is reproduced in the ToDo example:
examples/todo
.npm start
Reproduction
https://github.com/alexbal7/loopback-next/tree/fix/esm-files-import
The text was updated successfully, but these errors were encountered: