Issue
I have a ts module. I'm compiling this module to another project's specific folder by using outDir
of tsconfig.json
and the command tsc -w
. So, whenever I update the ts module, it compiles files to the other project but forgets file extensions while importing. And that means I have to manually update all extensions each time because it is a must??
So, I searched for a way to compile ts files with file extensions but found nothing. Then, I searched for disabling file extension (".js") needed for import/export in an ES6 project. I found this:
...configure your server to ignore the extension...
But he is not saying how to configure it.
Edit:
I am running my project with nodemon src/index.js
and when a js file has been generated that has an import without extension this is the error nodemon gave:
[nodemon] restarting due to changes...
[nodemon] starting `node src/index.js`
internal/process/esm_loader.js:74
internalBinding('errors').triggerUncaughtException(
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\......\trendyol' imported from C:\Users\.......\index.js
at finalizeResolution (internal/modules/esm/resolve.js:276:11)
at moduleResolve (internal/modules/esm/resolve.js:699:10)
at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:810:11)
at Loader.resolve (internal/modules/esm/loader.js:86:40)
at Loader.getModuleJob (internal/modules/esm/loader.js:230:28)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:56:40)
at link (internal/modules/esm/module_job.js:55:36) {
code: 'ERR_MODULE_NOT_FOUND'
}
[nodemon] app crashed - waiting for file changes before starting...
But when I add extensions (js
), it works as expected.
Solution
Because relative import paths need full extensions in ESM (we have to write import "./foo.js" instead of import "./foo")
So you have 2 different solution :
- add
.js
extension to your import file
or
- use
--experimental-specifier-resolution=node
to ignore extension on runtime
Answered By - martiendt
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.