TypeStrong / ts-node

TypeScript execution and REPL for node.js

Home Page:https://typestrong.org/ts-node

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Setting emitAssertForImportAttributes no longer works in Node.js 22 with latest swc

KidkArolis opened this issue · comments

Expected Behavior

Running this with ts-node should work when swc: true is set:

import pkg from './package.json' with { type: 'json' }
console.log(pkg)

Actual Behavior

import pkg from './package.json' assert {
                                 ^^^^^^

SyntaxError: Unexpected identifier 'assert'

Specifications

  • ts-node version: 10.9.2
  • node version: 22.1.0
  • TypeScript version: 5.3.3
  • @swc/core 1.4.17

Note

Node.js 22 removed import asserts and now only has import attributes. Setting emitAssertForImportAttributes to false in dist/transpilers/swc.js fixes the issue, but ofc, this would break the existing users, so not sure how to approach this!? A config option..? A breaking change?

Can confirm this behavior too. I'm using AdonisJS, which uses SWC under the hood to execute TS files.

My workaround was to disable SWC, at the cost of waiting a couple extra seconds for my script to finish executing.