eslint-config-universe icon indicating copy to clipboard operation
eslint-config-universe copied to clipboard

Cannot read property 'type' of undefined

Open martinezguillaume opened this issue 7 years ago • 7 comments

Hello !

I have a problem when I'm trying to write es7 decorators. I have this error with this command ./node_modules/.bin/eslint pages/login.js :

Cannot read property 'type' of undefined
TypeError: Cannot read property 'type' of undefined
    at isForInRef (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/rules/no-unused-vars.js:410:24)
    at variable.references.some.ref (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/rules/no-unused-vars.js:447:21)
    at Array.some (<anonymous>)
    at isUsedVariable (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/rules/no-unused-vars.js:446:40)
    at collectUnusedVariables (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/rules/no-unused-vars.js:569:26)
    at collectUnusedVariables (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/rules/no-unused-vars.js:576:17)
    at Program:exit (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/rules/no-unused-vars.js:621:36)
    at listeners.(anonymous function).forEach.listener (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/util/safe-emitter.js:47:58)
    at Array.forEach (<anonymous>)
    at Object.emit (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/util/safe-emitter.js:47:38)
    at NodeEventGenerator.applySelector (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/util/node-event-generator.js:251:26)
    at NodeEventGenerator.applySelectors (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/util/node-event-generator.js:280:22)
    at NodeEventGenerator.leaveNode (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/util/node-event-generator.js:303:14)
    at CodePathAnalyzer.leaveNode (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/code-path-analysis/code-path-analyzer.js:630:23)
    at Traverser.leave [as _leave] (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/linter.js:1000:32)
    at Traverser._traverse (/Users/guillaumemartinez/GitHub/sodexo-web/node_modules/eslint/lib/util/traverser.js:155:18)

Content of pages/login.js :

@App
export default class Login extends React.PureComponent {
  render() {
    return <div />
  }
}

Updating babel-eslint to ^8.1.2 solve the problem

martinezguillaume avatar Jan 02 '18 09:01 martinezguillaume

I got this same error, as well. I haven't tried upgrading babel-eslint, but it goes away if you downgrade eslint to 4.13.1. There's a thread about it on the eslint side, as well: https://github.com/eslint/eslint/issues/9778. Short story, they want us to upgrade to the latest babel :-)

keith-kurak avatar Jan 08 '18 19:01 keith-kurak

Weird, I tried to downgrade eslint too but it didn't work for me !

martinezguillaume avatar Jan 08 '18 23:01 martinezguillaume

I can reproduce this with babel-eslint 8.2.1. Not sure if babel-eslint related.

This error appears to be intermittent. I'm using babel-eslint 8.6.2

    Module build failed: TypeError: MyFile.jx: Cannot read property 'type' of undefined
        at Whitespace.getNewlinesAfter (node_modules/babel-generator/lib/whitespace.js:50:20)
        at Generator._printNewline (node_modules/babel-generator/lib/printer.js:459:34)
        at Generator.printJoin (node_modules/babel-generator/lib/printer.js:376:32)
        at Generator.printList (node_modules/babel-generator/lib/printer.js:430:17)
        at Generator.ObjectExpression (node_modules/babel-generator/lib/generators/types.js:57:10)
        at node_modules/babel-generator/lib/printer.js:298:23
        at Buffer.withSource (node_modules/babel-generator/lib/buffer.js:168:5)
        at Generator.withSource (node_modules/babel-generator/lib/printer.js:189:15)
        at Generator.print (node_modules/babel-generator/lib/printer.js:297:10)
        at Generator.ArrayExpression (node_modules/babel-generator/lib/generators/types.js:106:12)
        at node_modules/babel-generator/lib/printer.js:298:23
        at Buffer.withSource (node_modules/babel-generator/lib/buffer.js:168:5)
        at Generator.withSource (node_modules/babel-generator/lib/printer.js:189:15)
        at Generator.print (node_modules/babel-generator/lib/printer.js:297:10)
        at Generator.ObjectProperty (node_modules/babel-generator/lib/generators/types.js:92:8)
        at node_modules/babel-generator/lib/printer.js:298:23
        at Buffer.withSource (node_modules/babel-generator/lib/buffer.js:168:5)
        at Generator.withSource (node_modules/babel-generator/lib/printer.js:189:15)
        at Generator.print (node_modules/babel-generator/lib/printer.js:297:10)
        at Generator.printJoin (node_modules/babel-generator/lib/printer.js:366:12)
        at Generator.printList (node_modules/babel-generator/lib/printer.js:430:17)
        at Generator.ObjectExpression (node_modules/babel-generator/lib/generators/types.js:57:10)
        at node_modules/babel-generator/lib/printer.js:298:23
        at Buffer.withSource (node_modules/babel-generator/lib/buffer.js:168:5)
        at Generator.withSource (node_modules/babel-generator/lib/printer.js:189:15)
        at Generator.print (node_modules/babel-generator/lib/printer.js:297:10)
        at Generator.ObjectProperty (node_modules/babel-generator/lib/generators/types.js:92:8)
        at node_modules/babel-generator/lib/printer.js:298:23
        at Buffer.withSource (node_modules/babel-generator/lib/buffer.js:168:5)
        at Generator.withSource (node_modules/babel-generator/lib/printer.js:189:15)

Where I suspect there's a problem:

import React, { PureComponent } from 'react';

export class MyComponent extends PureComponent {
  someFn = (someArg, someDefaultArg = {}) => {
    console.log('hi');
  };
  render() {

  }
}

When I change someDefaultArg = {}, the error goes away (sometimes).

AndrewRayCode avatar Jan 26 '18 22:01 AndrewRayCode

I tried a project with flow with this lib and I had a similar problem (even if I updated babel-eslint):

Cannot read property 'type' of undefined
TypeError: Cannot read property 'type' of undefined
    at /Users/guillaumemartinez/GitHub/project-example/node_modules/eslint-plugin-flowtype/dist/rules/noDupeKeys.js:76:32
    at arrayEach (/Users/guillaumemartinez/GitHub/project-example/node_modules/lodash/lodash.js:537:11)
    at Function.forEach (/Users/guillaumemartinez/GitHub/project-example/node_modules/lodash/lodash.js:9359:14)
    at checkForDuplicates (/Users/guillaumemartinez/GitHub/project-example/node_modules/eslint-plugin-flowtype/dist/rules/noDupeKeys.js:73:22)
    at listeners.(anonymous function).forEach.listener (/Users/guillaumemartinez/GitHub/project-example/node_modules/eslint/lib/util/safe-emitter.js:47:58)
    at Array.forEach (<anonymous>)
    at Object.emit (/Users/guillaumemartinez/GitHub/project-example/node_modules/eslint/lib/util/safe-emitter.js:47:38)
    at NodeEventGenerator.applySelector (/Users/guillaumemartinez/GitHub/project-example/node_modules/eslint/lib/util/node-event-generator.js:251:26)
    at NodeEventGenerator.applySelectors (/Users/guillaumemartinez/GitHub/project-example/node_modules/eslint/lib/util/node-event-generator.js:280:22)
    at NodeEventGenerator.enterNode (/Users/guillaumemartinez/GitHub/project-example/node_modules/eslint/lib/util/node-event-generator.js:294:14)
    at CodePathAnalyzer.enterNode (/Users/guillaumemartinez/GitHub/project-example/node_modules/eslint/lib/code-path-analysis/code-path-analyzer.js:608:23)
    at Traverser.enter (/Users/guillaumemartinez/GitHub/project-example/node_modules/eslint/lib/linter.js:956:32)
    at Traverser.__execute (/Users/guillaumemartinez/GitHub/project-example/node_modules/estraverse/estraverse.js:397:31)
    at Traverser.traverse (/Users/guillaumemartinez/GitHub/project-example/node_modules/estraverse/estraverse.js:501:28)
    at Traverser.traverse (/Users/guillaumemartinez/GitHub/project-example/node_modules/eslint/lib/util/traverser.js:31:22)
    at Linter._verifyWithoutProcessors (/Users/guillaumemartinez/GitHub/project-example/node_modules/eslint/lib/linter.js:953:19)

I fix it with help from this pr that tell us to disable the related rule (for me no-dupe-keys, we see it in the error message) to temporarily fix it. The pr will be merged soon.

EDIT: Disable the rule didn't fix the issue, sorry my bad 😔

martinezguillaume avatar Feb 01 '18 16:02 martinezguillaume

I had the same issue. Try: npm install [email protected]

also I have add rule to eslint config file

parser: "babel-eslint", rules: { strict: 0 },

captain-yossarian avatar Feb 05 '18 09:02 captain-yossarian

Recieving this error.

 Test suite failed to run

    TypeError: /Users/Magne/Workspace/bilen-min/app/src/modules/dashboard/ActivityHistory/ActivityHistoryWithData.js: Cannot read property 'type' of undefined
      
      at Whitespace.getNewlinesAfter (node_modules/babel-generator/lib/whitespace.js:50:20)
      at Generator._printNewline (node_modules/babel-generator/lib/printer.js:459:34)
      at Generator.printJoin (node_modules/babel-generator/lib/printer.js:376:32)
      at Generator.printList (node_modules/babel-generator/lib/printer.js:430:17)
      at Generator.ObjectExpression (node_modules/babel-generator/lib/generators/types.js:57:10)
      at node_modules/babel-generator/lib/printer.js:298:23
      at Buffer.withSource (node_modules/babel-generator/lib/buffer.js:168:5)
      at Generator.withSource (node_modules/babel-generator/lib/printer.js:189:15)
      at Generator.print (node_modules/babel-generator/lib/printer.js:297:10)
      at Generator.VariableDeclarator (node_modules/babel-generator/lib/generators/statements.js:314:10)

Using:

    "babel-core": "^6.26.3",
    "babel-eslint": "^8.2.1",
    "babel-jest": "^23.0.1",
    "babel-plugin-module-resolver": "^3.1.0",
    "babel-preset-expo": "^4.0.0",

redbar0n avatar May 30 '18 15:05 redbar0n

The Cannot read property 'type' of undefined error seems to be pretty general, but like @AndrewRayCode I got the error with the stack: at Whitespace.getNewlinesAfter (node_modules/babel-generator/lib/whitespace.js:50:20)

I removed some whitespace/newlines in the test file that was failing, and suddenly it worked again. Incidentally, all the other test files failing with the same error then also started working again. So it seems to have been something with a cache having been cleared out. Maybe the babel cache, or the jest cache.

See perhaps: https://github.com/babel/babel/pull/7205#issuecomment-362818338

redbar0n avatar May 31 '18 11:05 redbar0n