ts-node icon indicating copy to clipboard operation
ts-node copied to clipboard

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

Open KidkArolis opened this issue 1 year ago • 2 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?

KidkArolis avatar May 03 '24 19:05 KidkArolis

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.

vocafeuvre avatar Jul 30 '24 15:07 vocafeuvre