privatenumber / tsx

⚡️ TypeScript Execute | The easiest way to run TypeScript in Node.js
https://tsx.is
MIT License
9.74k stars 154 forks source link

imported module evaluated as non-strict if importing module is not explicitly a module #676

Open mhofman opened 2 hours ago

mhofman commented 2 hours ago

Acknowledgements

Minimal reproduction URL

https://stackblitz.com/edit/node-3q8xbs?file=index.ts

Problem & expected behavior (under 200 words)

An es modules imported by a tsx transformed file will be evaluated in sloppy/strict mode depending on the module type of the importing file, which should have no effect. A file parsed and evaluated as esm should always be strict.

When running tsx index.ts, we get isStrict: false which is incorrect. tsx index.mts or node index.mjs both output isStrict: true as expected.

For some reason a dynamic import does not exhibit the same problem.

Bugs are expected to be fixed by those affected by it

Compensating engineering work will speed up resolution and support the project

mhofman commented 2 hours ago

Possibly related to #442