Typescript: TypeError: Cannot read property 'kind' of undefined

Created on 7 May 2020  路  30Comments  路  Source: microsoft/TypeScript


TypeScript Version: 3.9.1-rc


Search Terms: typeerror kind

Code

Unknown

Expected behavior:

Compilation

Actual behavior:

TypeError: Cannot read property 'kind' of undefined
    at getErrorSpanForNode (.../node_modules/typescript/lib/typescript.js:13845:22)
    at createDiagnosticForNodeInSourceFile (.../node_modules/typescript/lib/typescript.js:13794:20)
    at Object.createDiagnosticForNode (.../node_modules/typescript/lib/typescript.js:13785:16)
    at .../node_modules/typescript/lib/typescript.js:41784:135
    at Map.forEach (<anonymous>)
    at getInitializerTypeFromAssignmentDeclaration (.../node_modules/typescript/lib/typescript.js:41766:52)
    at getWidenedTypeForAssignmentDeclaration (.../node_modules/typescript/lib/typescript.js:41660:123)
    at getTypeOfFuncClassEnumModuleWorker (.../node_modules/typescript/lib/typescript.js:42220:34)
    at getTypeOfFuncClassEnumModule (.../node_modules/typescript/lib/typescript.js:42199:51)
    at getTypeOfSymbol (.../node_modules/typescript/lib/typescript.js:42312:24)

Playground Link:

Unknown

Related Issues:

Unknown

Bug

Most helpful comment

Had the fix been released? I still have the same issue with latest: next 9.4.4, typescript 3.9.5 and ts-node 8.10.2. node -v 12.4.0.
The same as was mentioned previously: switching to typescript 3.8.3 fixes the problem.

All 30 comments

Adding a console.log to createDiagnosticForNode with all its arguments prints the following:

undefined {
  code: 6203,
  category: 3,
  key: '_0_was_also_declared_here_6203',
  message: "'{0}' was also declared here.",
  reportsUnnecessary: undefined,
  elidedInCompatabilityPyramid: undefined
} undefined globals undefined undefined undefined

nitpick: it's spelled "compatibility"

It looks like the line that is causing the crash itself is:

// @ts-check
// this is a jest.config.js file

const config = makeConfig(/* ... */)

config.globals.__STORYBOOK__ = false // this line
// commenting it out prevents the crash

module.exports = config

where the return type of makeConfig is import('@jest/types').Config.InitialOptions.

We're seeing a similar issue, however, I can't seem to find the cause in our code.

@Jessidhia did you add more console.log's in other parts to find the file/line?

I've noticed quite similar (also, looking from stack trace - seemingly different one) issue. I thought that I will better file it as a dedicated issue - #38558. If it will turn out, that it is a duplicate, we can simply close the issue.

@Jessidhia, can you post a precise repro? I tried a few things with the above snippet but can't get it to happen.

@elibarzilay this happened to me today as I was setting up a new nextjs project. Basically if your checkout this example or yarn create next-app --example custom-server-typescript custom-server-typescript-app and run yarn dev you get this error:

    TypeError: Cannot read property 'kind' of undefined
        at getErrorSpanForNode (../node_modules/typescript/lib/typescript.js:13856:22)
        at createDiagnosticForNodeInSourceFile (../node_modules/typescript/lib/typescript.js:13805:20)
        at Object.createDiagnosticForNode (../node_modules/typescript/lib/typescript.js:13796:16)
        at ../node_modules/typescript/lib/typescript.js:41824:135
        at Map.forEach (<anonymous>)
        at getInitializerTypeFromAssignmentDeclaration (../node_modules/typescript/lib/typescript.js:41806:52)
        at getWidenedTypeForAssignmentDeclaration (../node_modules/typescript/lib/typescript.js:41700:123)
        at getTypeOfFuncClassEnumModuleWorker (../node_modules/typescript/lib/typescript.js:42260:34)
        at getTypeOfFuncClassEnumModule (../node_modules/typescript/lib/typescript.js:42239:51)
        at getTypeOfSymbol (../node_modules/typescript/lib/typescript.js:42352:24)
        at checkPropertyAccessExpressionOrQualifiedName (../node_modules/typescript/lib/typescript.js:57154:53)
        at checkPropertyAccessExpression (../node_modules/typescript/lib/typescript.js:57013:17)
        at checkExpressionWorker (../node_modules/typescript/lib/typescript.js:61646:28)
        at checkExpression (../node_modules/typescript/lib/typescript.js:61567:38)
        at maybeCheckExpression (../node_modules/typescript/lib/typescript.js:60780:34)
        at checkBinaryExpression (../node_modules/typescript/lib/typescript.js:60737:25)

If you pin Typescript to 3.8.3 the error goes away. Cheers

I'm not sure if I'm doing it right, but I tried the following two chunks in an empty directory:

$ git clone https://github.com/zeit/next.js
$ cd next.js/examples/custom-server-typescript
$ npm i
$ tsc

and

$ yarn create next-app --example custom-server-typescript custom-server-typescript-app
$ cd custom-server-typescript-app
$ yarn dev

Both ran without any errors...

@elibarzilay try to change the typescript version to the latest in package.json before installing.

@elibarzilay @Multiply yeah, it installs Typescript 3.9.3 when I setup the project. I get the error described above and as I said when I switch to 3.8.3 the error goes away.

I'm using a tsc which is wired to a build from the current master, but just in case, I repeated both of the above after editing package.json and removed the TS line, and repeated with editing it to 3.9.3.

Still no errors...

To make this more controllable, I used docker. This is my build file (which doesn't get any errors):

FROM ubuntu

RUN apt update \
 && apt upgrade -y \
 && apt install -y curl

RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - \
 && apt install -y nodejs

RUN curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
 && echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list \
 && apt update && apt install -y yarn

RUN mkdir /work
WORKDIR /work

RUN yarn create next-app --example custom-server-typescript t \
 && cd t \
 && sed -i -e 's/\("typescript": "^\)\(.*\)"/\13.9.3"/' package.json

When I switch to Nextjs version 9.4.2, Typescript version 3.9.3, I could no longer see the error

When I switch to Nextjs version 9.4.2, Typescript version 3.9.3, I could no longer see the error

Can confirm 9.4.2 of nextjs fixed it for us as well.

I changed the docker setup to change the nextjs version to 9.4.1 and to 9.4.0, and still no error...

I have the problem with typescript 3.9.3 and next 9.4.2 and ts-node 8.10.1. Switching to typescript 3.8.3 fixes the problem.

I seem to have the same issue with next 9.4.2, typescript 3.9.3 and ts-node 8.10.1.

Could be related to bad intersection types as documented here? https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-9.html#intersections-reduced-by-discriminant-properties

@Hyokune @SeyedAlirezaFatemi @anthanh can you please provide concrete repro steps (ideally involving just a handful of TS/JS files and a config file)? We've tried a bunch of different configurations with the linked repo and haven't been able to cause the exception to occur.

@Hyokune @SeyedAlirezaFatemi @anthanh can you please provide concrete repro steps (ideally involving just a handful of TS/JS files and a config file)? We've tried a bunch of different configurations with the linked repo and haven't been able to cause the exception to occur.

I reproduced the error in this repo:
https://github.com/SeyedAlirezaFatemi/ts-error
Started from https://github.com/vercel/next.js/tree/canary/examples/custom-server-typescript.
build and start and you will see the error.

(@RyanCavanaugh, FWIW, I tried this one too, and still no failures.)

@elibarzilay I opened @SeyedAlirezaFatemi repo in Gitpod and ran these commands:

yarn && yarn build && yarn start

After opening http://localhost:3000 with preview button in Open Ports tab I get the error.

Ah, I never tried yarn start before -- I now see the crash, finally...

So, after digging through that pile of s...tuff, here's an actual minimal repro:

  • x.js:
    module.exports.x = 1; module.exports = require("./y.js");
  • y.d.ts:
    export declare type x = 1;

Bit late with the response, sorry.
After applying your patch locally the issue went away for us. (eagerly waiting for it to be included in a release)

Had the fix been released? I still have the same issue with latest: next 9.4.4, typescript 3.9.5 and ts-node 8.10.2. node -v 12.4.0.
The same as was mentioned previously: switching to typescript 3.8.3 fixes the problem.

This is still a problem with TypeScript 3.9.7. @elibarzilay's repro fails without any modifications. Unfortunately downgrading 3.8.3 is not an option for me because old versions ironically have another bug. Will we get this problem fixed?

@elibarzilay Hi, Downgrading the TypeScript version from latest to 3.8.3 solves the problem but downgrading TS version is not a good option for me as well. Can we expect a fix for this?

Having the same issue with nextJS version 9.4.4 with Typescript version 3.9.7.

@sourabh8003 IIRC, it was only included in 4.0.

Sorry, I should have read more carefully. It's working on 4.0.0-dev.20200729. Thank you.

Was this page helpful?
0 / 5 - 0 ratings