I'm moving a project over to using node's native ES modules (enabled with the --experimental-modules flag). After updating my code, module-alias is no longer working. I tried adding this to the root of my app (this is the method I was using before transitioning to esm):
require('module-alias/register')
I tried changing it to:
import 'module-alias/register'
I tried requiring when starting the server:
node --experimental-modules -r module-alias/register server/app.js
The first aliased import in my app is this:
import {responseError} from '@app/lib/response'
I'm getting this error from it:
internal/modules/esm/default_resolve.js:69
let url = moduleWrapResolve(specifier, parentURL);
^
Error: Cannot find package '@app/lib' imported from server/app.js
at Loader.resolve [as _resolve] (internal/modules/esm/default_resolve.js:69:13)
at Loader.resolve (internal/modules/esm/loader.js:70:33)
at Loader.getModuleJob (internal/modules/esm/loader.js:143:40)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:43:40)
at link (internal/modules/esm/module_job.js:42:36)
The relevant lines in my package.json are:
"_moduleAliases": {
"@app": "./server"
},
I'm starting the app like this:
node --experimental-modules server/app.js
module-alias worked fine using CommonJS. The only change I made to the code was changing requires to imports.
I'm moving a project over to using node's native ES modules (enabled with the
--experimental-modulesflag). After updating my code, module-alias is no longer working. I tried adding this to the root of my app (this is the method I was using before transitioning to esm):I tried changing it to:
I tried requiring when starting the server:
The first aliased import in my app is this:
I'm getting this error from it:
The relevant lines in my package.json are:
I'm starting the app like this:
module-alias worked fine using CommonJS. The only change I made to the code was changing
requires toimports.