TypeScript: Debug Failure. Did not expect JsxExpression to have an Identifier in its trivia

TypeScript Version: 2.9.2 Can’t use ts@next because of #25484 that happens every 5min

Search Terms:

Code

Error: Debug Failure. Did not expect JsxExpression to have an Identifier in its trivia
    at addSyntheticNodes (/usr/local/lib/node_modules/typescript/lib/tsserver.js:89462:30)
    at createChildren (/usr/local/lib/node_modules/typescript/lib/tsserver.js:89451:9)
    at NodeObject.getChildren (/usr/local/lib/node_modules/typescript/lib/tsserver.js:89400:56)
    at getTokenAtPositionWorker (/usr/local/lib/node_modules/typescript/lib/tsserver.js:71215:43)
    at Object.getTokenAtPosition (/usr/local/lib/node_modules/typescript/lib/tsserver.js:71206:16)
    at getInfo (/usr/local/lib/node_modules/typescript/lib/tsserver.js:85133:28)
    at Object.getCodeActions (/usr/local/lib/node_modules/typescript/lib/tsserver.js:85095:28)
    at /usr/local/lib/node_modules/typescript/lib/tsserver.js:83738:121
    at Object.flatMap (/usr/local/lib/node_modules/typescript/lib/tsserver.js:1802:25)
    at Object.getFixes (/usr/local/lib/node_modules/typescript/lib/tsserver.js:83738:23)
    at /usr/local/lib/node_modules/typescript/lib/tsserver.js:90750:35
    at Object.flatMap (/usr/local/lib/node_modules/typescript/lib/tsserver.js:1802:25)
    at Object.getCodeFixesAtPosition (/usr/local/lib/node_modules/typescript/lib/tsserver.js:90748:23)
    at IOSession.Session.getCodeFixes (/usr/local/lib/node_modules/typescript/lib/tsserver.js:97423:64)
    at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (/usr/local/lib/node_modules/typescript/lib/tsserver.js:96250:61)
    at /usr/local/lib/node_modules/typescript/lib/tsserver.js:97580:88
    at IOSession.Session.executeWithRequestId (/usr/local/lib/node_modules/typescript/lib/tsserver.js:97571:28)
    at IOSession.Session.executeCommand (/usr/local/lib/node_modules/typescript/lib/tsserver.js:97580:33)
    at IOSession.Session.onMessage (/usr/local/lib/node_modules/typescript/lib/tsserver.js:97600:35)
    at Interface.<anonymous> (/usr/local/lib/node_modules/typescript/lib/tsserver.js:98831:27)
    at emitOne (events.js:96:13)
    at Interface.emit (events.js:191:7)
    at Interface._onLine (readline.js:241:10)
    at Interface._normalWrite (readline.js:384:12)
    at Socket.ondata (readline.js:101:10)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:191:7)
    at readableAddChunk (_stream_readable.js:178:18)
    at Socket.Readable.push (_stream_readable.js:136:10)
    at Pipe.onread (net.js:560:20)

Expected behavior:

Actual behavior:

Playground Link:

Related Issues:

tsserver logs id: 1660483066

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Reactions: 4
  • Comments: 27 (10 by maintainers)

Most upvoted comments

TS 3.6.2 hinted at spread operators causing issues. So I did some code changes and found that changing the structure fixed the issue even in TS 3.5.2.

// before (this caused the failure)
  const lg: Logger = pinoms({
    streams: [
      ...(!isDev ? [] : [ // <==== Think it is this line.
        { level: 'trace', stream: pinoms.prettyStream() },
        { level: 'trace', stream: fileOutStream('trace') }
      ]),
      { level: 'info', stream: fileOutStream('info') },
      { level: 'warn', stream: fileOutStream('warn') },
      { level: 'error', stream: fileOutStream('error') },
      { level: 'fatal', stream: fileOutStream('fatal') }
    ]
  }) as Logger

// after, compiles just fine.
  const devlogs = isDev ? [
    { level: 'trace', stream: pinoms.prettyStream() },
    { level: 'trace', stream: fileOutStream('trace') }
  ] : []

  const lg: Logger = pinoms({
    streams: [
      ...devlogs,
      { level: 'info', stream: fileOutStream('info') },
      { level: 'warn', stream: fileOutStream('warn') },
      { level: 'error', stream: fileOutStream('error') },
      { level: 'fatal', stream: fileOutStream('fatal') }
    ]
  }) as Logger

My issue appears to be fixed. I just wanted to leave this here for future reference. Thanks.

Here’s a simple repo that I see using that ts version:

  1. For the tsx file, with the cursor at the |:
import * as React from 'react'

const a = <div>{<div />|}</div>
  1. Type x so that the code becomes:
import * as React from 'react'

const a = <div>{<div />x}</div>

this happens consistently when doing TSX, like this (in order):

// start with a React.ReactNode expecting result
const extra = useMemo(() => {
  return |
}, [])

then try to do some conditionals using { and } in a weird way, like type the element then put it inside {} like:

const extra = useMemo(() => {
  return <div>{ <entry> }</div>
}, [])

then try to do the ternary expression

const extraMemo = useMemo(() => {
  return <div>{ extra.length ? extra.map((item) => <entry item={item} />) : null }</div>
}, [extra]) // extra = array of strings

the error should pop up. the provider will fail forever to properly parse JSX unless you restart it. it happens so often and I’m currently on:

[2019-05-08 18:58:37.813] [exthost] [error] Error: TypeScript Server Error (3.5.0-dev.20190507)
Debug Failure. Did not expect JsxExpression to have an Identifier in its trivia
Error: Debug Failure. Did not expect JsxExpression to have an Identifier in its trivia
    at addSyntheticNodes (tsserver.js:120446:30)
    at createChildren (tsserver.js:120435:9)
    at NodeObject.getChildren (tsserver.js:120379:56)
    at getTokenAtPositionWorker (tsserver.js:96428:43)
    at Object.getTokenAtPosition (tsserver.js:96420:16)
    at getInfo (tsserver.js:117048:28)
    at Object.getAvailableActions (tsserver.js:117032:28)
    at tsserver.js:112350:128
    at getIterator (tsserver.js:625:23)
    at Object.flatMapIterator (tsserver.js:608:27)
    at Object.getApplicableRefactors (tsserver.js:112349:36)
    at Proxy.getApplicableRefactors (tsserver.js:121972:32)
    at IOSession.Session.getApplicableRefactors (tsserver.js:130718:53)
    at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (tsserver.js:129542:61)
    at tsserver.js:130942:88
    at IOSession.Session.executeWithRequestId (tsserver.js:130933:28)
    at IOSession.Session.executeCommand (tsserver.js:130942:33)
    at IOSession.Session.onMessage (tsserver.js:130964:35)
    at Interface.<anonymous> (tsserver.js:132255:27)
    at Interface.emit (events.js:182:13)
    at Interface._onLine (readline.js:290:10)
    at Interface._normalWrite (readline.js:433:12)
    at Socket.ondata (readline.js:149:10)
    at Socket.emit (events.js:182:13)
    at addChunk (_stream_readable.js:279:12)
    at readableAddChunk (_stream_readable.js:264:11)
    at Socket.Readable.push (_stream_readable.js:219:10)
    at Pipe.onread (net.js:636:20)
	at Function.create (f:\Users\Paulo\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\extensions\typescript-language-features\dist\extension.js:1:176343)
	at v.dispatchResponse (f:\Users\Paulo\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\extensions\typescript-language-features\dist\extension.js:1:181711)
	at v.dispatchMessage (f:\Users\Paulo\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\extensions\typescript-language-features\dist\extension.js:1:180463)
	at constructor._reader.onData.e (f:\Users\Paulo\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\extensions\typescript-language-features\dist\extension.js:1:179819)
	at u.fire (f:\Users\Paulo\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\out\vs\workbench\services\extensions\node\extensionHostProcess.js:47:720)
	at t.Reader.onLengthData (f:\Users\Paulo\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\extensions\typescript-language-features\dist\extension.js:1:185692)
	at Socket.t.Reader.constructor.e.on.e (f:\Users\Paulo\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app\extensions\typescript-language-features\dist\extension.js:1:185340)
	at Socket.emit (events.js:182:13)
	at Socket.EventEmitter.emit (domain.js:442:20)
	at addChunk (_stream_readable.js:279:12)
	at readableAddChunk (_stream_readable.js:264:11)
	at Socket.Readable.push (_stream_readable.js:219:10)
	at Pipe.onread (net.js:636:20)

Echoing in that I am also receiving this. It’s on a private project, so sharing the code is not possible.

This ts error is in combination with syntax highlighting errors, which leads me to believe that there are experimental language features we’re using which create-react-app can transpile perfectly, but vscode’s typescript chokes on.

by the way, yarn tsc compiles without error in this project of mine which is showing the JsxExpression error