node config_error ai_generated true

SyntaxError: Cannot use import statement outside a module (ts-node)

ID: node/ts-node-syntax-error

Also available as: JSON · Markdown
90%Fix Rate
90%Confidence
50Evidence
2023-01-01First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
20 active

Root Cause

ts-node can't handle ESM syntax. Needs tsconfig configuration for ESM.

generic

Workarounds

  1. 92% success Use ts-node with --esm flag: ts-node --esm script.ts
    ts-node --esm script.ts

    Sources: https://typestrong.org/ts-node/docs/imports#native-ecmascript-modules

  2. 88% success Set 'module': 'nodenext' and 'moduleResolution': 'nodenext' in tsconfig.json
    'nodenext' and 'moduleResolution': 'nodenext' in tsconfig.json

    Sources: https://typestrong.org/ts-node/docs/imports

  3. 90% success Consider tsx as a drop-in replacement: npx tsx script.ts (faster, less config)
    npx tsx script.ts (faster, less config)

    Sources: https://www.npmjs.com/package/tsx

Dead Ends

Common approaches that don't work:

  1. Convert all imports to require() 70% fail

    Defeats the purpose of TypeScript ES modules

Error Chain

Frequently confused with: