javascript – How to have top level await in typescript (switch from commonjs to esnext) without having to change all imports to have .js ending
I would like to have top level await in my typescript nodejs project.
My tsconfig used to look like this:
{
"compilerOptions": {
"target": "es2017",
"module": "commonjs",
"lib": [
"dom",
"es6",
"es2017",
"esnext.asynciterable"
],
"skipLibCheck": true,
"sourceMap": true,
"outDir": "./dist",
"moduleResolution": "node",
#### other stuff which I think is not relevant removed ####
And I now switched it to
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"lib": [
"dom",
"es6",
"es2017",
"esnext.asynciterable"
],
"skipLibCheck": true,
"sourceMap": true,
"outDir": "./dist",
"moduleResolution": "node",
#### other stuff which I think is not relevant removed ####
I have also added "type": "module"
to my package.json. Indeed I now have the ability to do top level awaits however
- I need to change every import to add the .js file extension
- For folders where I added an index.ts to export all the modules I could previously just import the folder name. Now I need to import foldername/index.js
- When I auto add an import with vscode it adds it without the .js
The way it is with commonjs is so elegant – can I have the same behaviour with esnext or keep it some other way while gaining top-level await?
Read more here: Source link