Closed
Description
Version
v22.7.0
Platform
Linux 6.8.0-40-generic #40~22.04.3-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 30 17:30:19 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
Subsystem
module
What steps will reproduce the bug?
Create a .cts
file with the following contents:
// example.cts
import fs = require("fs");
console.log(fs);
and run it with node --experimental-transform-types ./example.cts
.
How often does it reproduce? Is there a required condition?
This happens consistently.
What is the expected behavior? Why is that the expected behavior?
This should execute as a CommonJS module.
Despite appearances import ... = require(...)
is specifically for CommonJS modules (so that CommonJS modules can also import and export types, not just values).
What do you see instead?
The code is incorrectly transformed to have ES module syntax and throws an error at runtime:
(node:67783) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/home/jamesernator/projects/playground/test.cts:3
export { };
^^^^^^
SyntaxError: Unexpected token 'export'
at wrapSafe (node:internal/modules/cjs/loader:1469:18)
at Module._compile (node:internal/modules/cjs/loader:1491:20)
at Object.loadCTS [as .cts] (node:internal/modules/cjs/loader:1581:10)
at Module.load (node:internal/modules/cjs/loader:1317:32)
at Module._load (node:internal/modules/cjs/loader:1127:12)
at TracingChannel.traceSync (node:diagnostics_channel:315:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:217:24)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:166:5)
at node:internal/main/run_main_module:30:49
Node.js v22.7.0
Additional information
No response