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

Cryptic error on invalid tsconfig.json, e.g. if attempting to extend nonexistent tsconfig file

dandv opened this issue · comments

Search Terms

Function: [nodejs.util.inspect.custom]

Expected Behavior

This bug arose after I renamed a base tsconfig-base.json file, and the tsconfig.json in my monorepo subdir was doing an "extends": "../tsconfig-base.json". The tsconfig.json was syntactically valid, but ../tsconfig-base.json was not found. Turns out that any error with tsconfig.json will produce the cryptic error below.

Actual Behavior

$ node --loader=ts-node/esm -e 'console.log(1)'

node:internal/process/esm_loader:40
      internalBinding('errors').triggerUncaughtException(
                                ^
[Object: null prototype] {
  [Symbol(nodejs.util.inspect.custom)]: [Function: [nodejs.util.inspect.custom]]
}

Node.js v18.19.0

Steps to reproduce the problem

  1. Create an invalid tsconfig.json, e.g. { 1 }
  2. Run node --loader=ts-node/esm -e 'console.log(1)'

Specifications

  • ts-node version: 10.9.1
  • node version: 18.19.0
  • TypeScript version: 5.3.3
  • tsconfig.json, if you're using one:
{ 1 }
  • package.json:
{ "type": "module" }
  • Operating system and version: Fedora Linux 38

I am having exactly the same problem...

ts-node version: 10.9.2
node version: v22.8.0
TypeScript version: 5.5.4

So I turned on "Caught Exceptions" as breakpoint in VSCode and then it breaks here:
image
(in \node_modules\ts-node\dist\index.js)

The error object looks like this:

{
  diagnosticCodes: [
    5023,
    5023,
    5023,
  ],
  diagnosticText: "error TS5023: Unknown compiler option 'experimentalSpecifierResolution'.\r\nerror TS5023: Unknown compiler option 'transpileOnly'.\r\nerror TS5023: Unknown compiler option 'esm'.\r\n",
  message: "⨯ Unable to compile TypeScript:\nerror TS5023: Unknown compiler option 'experimentalSpecifierResolution'.\r\nerror TS5023: Unknown compiler option 'transpileOnly'.\r\nerror TS5023: Unknown compiler option 'esm'.\r\n"
}

But the output in the terminal is:

> node --loader ts-node/esm tests/first.ts
Debugger attached.

node:internal/modules/run_main:123
    triggerUncaughtException(
    ^
Waiting for the debugger to disconnect...
[Object: null prototype] {
  [Symbol(nodejs.util.inspect.custom)]: [Function: [nodejs.util.inspect.custom]]
}

Node.js v22.8.0

So I - obviously - made a mistake in my tsconfig.ts for "ts-node", but ts-node should just show that.

I should probably add that I run this in a "Javascript Debug Terminal" in VSCode, hence the "Debugger attached." message.