Cannot read property 'kind' of undefined at rules/noUnusedRule.js:155:69
Closed this issue · 4 comments
Hey, had a weird issue since TypeScript v3.2.x where this package throws "TypeError: Cannot read property 'kind' of undefined". I've noticed that there are some potentially related issues in the TypeScript repository (listed below).
microsoft/TypeScript#28810
microsoft/TypeScript#30269
Here is our build pre v3.2.x: https://circleci.com/gh/LearningLocker/xapi-activities/4286
Here is our build post v3.2.x: https://circleci.com/gh/LearningLocker/xapi-activities/4269
Current Dependencies
"tslint": "5.14.0",
"tslint-consistent-codestyle": "1.15.1",
"tslint-immutable": "4.9.1",
"typescript": "3.3.3"
Stack trace of error when running TSLint.
The 'no-unused' rule threw an error in '/Applications/AMPPS/www/xapi-activities/src/mongoModelsRepo/patchProfile.ts':
TypeError: Cannot read property 'kind' of undefined
at isUpdate (/Applications/AMPPS/www/xapi-activities/node_modules/@ht2-labs/typescript-project/node_modules/tslint-consistent-codestyle/rules/noUnusedRule.js:155:69)
at filterWriteOnly (/Applications/AMPPS/www/xapi-activities/node_modules/@ht2-labs/typescript-project/node_modules/tslint-consistent-codestyle/rules/noUnusedRule.js:125:63)
at /Applications/AMPPS/www/xapi-activities/node_modules/@ht2-labs/typescript-project/node_modules/tslint-consistent-codestyle/rules/noUnusedRule.js:56:24
at Map.forEach (<anonymous>)
at UnusedWalker.walk (/Applications/AMPPS/www/xapi-activities/node_modules/@ht2-labs/typescript-project/node_modules/tslint-consistent-codestyle/rules/noUnusedRule.js:37:15)
at Rule.AbstractRule.applyWithWalker (/Applications/AMPPS/www/xapi-activities/node_modules/@ht2-labs/typescript-project/node_modules/tslint/lib/language/rule/abstractRule.js:31:16)
at Rule.apply (/Applications/AMPPS/www/xapi-activities/node_modules/@ht2-labs/typescript-project/node_modules/tslint-consistent-codestyle/rules/noUnusedRule.js:18:21)
at Linter.applyRule (/Applications/AMPPS/www/xapi-activities/node_modules/tslint/lib/linter.js:214:29)
at /Applications/AMPPS/www/xapi-activities/node_modules/tslint/lib/linter.js:155:85
at Object.flatMap (/Applications/AMPPS/www/xapi-activities/node_modules/tslint/lib/utils.js:160:29)
Code at top of stack trace.
case ts.SyntaxKind.BinaryExpression:
if (tsutils_1.isAssignmentKind(parent.operatorToken.kind))
return parent.right === use &&
parent.left.kind === ts.SyntaxKind.Identifier &&
parent.left.text === identifier.text;
use = parent;
break;
Log of parent
property.
NodeObject {
pos: 1953,
end: 1970,
flags: 16384,
transformFlags: 536870912,
parent:
NodeObject {
pos: 1859,
end: 2998,
flags: 16384,
transformFlags: 546308250,
parent:
NodeObject {
pos: 799,
end: 4408,
flags: 16384,
transformFlags: 546308250,
parent: [Object],
kind: 218,
multiLine: true,
statements: [Array] },
kind: 222,
expression: [Circular],
thenStatement:
NodeObject {
pos: 1971,
end: 2998,
flags: 16384,
transformFlags: 546308250,
parent: [Circular],
kind: 218,
multiLine: true,
statements: [Array],
locals: [Object],
nextContainer: [Object] },
elseStatement: undefined },
kind: 202,
operator: 52,
operand:
IdentifierObject {
pos: 1954,
end: 1970,
flags: 16384,
parent: [Circular],
escapedText: 'checkIfNoneMatch',
flowNode: { flags: 1552, antecedent: [Object], node: [Object] },
transformFlags: 536870912 } }
This looks like a dependency issue. There are two different versions of TypeScript installed: tslint
and tsutils
use typescript@3.2.1
while tslint-consistent-codestyle
uses typescript@3.0.3
. That mismatch causes everything to blow up.
The issue is this package: https://github.com/LearningLocker/xapi-activities/blob/dcc04c22a8ae8636933ec9ef5a75790c25558f6f/package-lock.json#L119-L155
Hmmm really not sure what the issue is, had a dig through this morning, still saw errors when everything was at 3.0.3, just not as many of those errors.
I have the same issue. Lots of TypeError: Cannot read property 'kind' of undefined
.
package.json
:
"tslint": "^5.17.0",
"tslint-consistent-codestyle": "^1.15.0",
"typescript": "~3.4",
tsc -v
Version 3.4.5
tslint -v
5.17.0
...
The 'import-blacklist' rule threw an error in '*****/src/app/*****.component.ts':
TypeError: Cannot read property 'kind' of undefined
at ImportFinder._findImports (*****\node_modules\tsutils\util\util.js:1037:47)
at ImportFinder.find (*****\node_modules\tsutils\util\util.js:1025:14)
at Object.findImports (*****\node_modules\tsutils\util\util.js:999:50)
at walk (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:122:37)
at Rule.AbstractRule.applyWithFunction (*****\node_modules\tslint\lib\language\rule\abstractRule.js:39:9)
at Rule.apply (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:36:21)
at Linter.applyRule (*****\node_modules\tslint\lib\linter.js:214:29)
at *****\node_modules\tslint\lib\linter.js:155:85
at Object.flatMap (*****\node_modules\tslint\lib\utils.js:160:29)
at Linter.getAllFailures (*****\node_modules\tslint\lib\linter.js:155:32)
The 'import-blacklist' rule threw an error in '*****/src/app/*****.module.ts':
TypeError: Cannot read property 'kind' of undefined
at ImportFinder._findImports (*****\node_modules\tsutils\util\util.js:1037:47)
at ImportFinder.find (*****\node_modules\tsutils\util\util.js:1025:14)
at Object.findImports (*****\node_modules\tsutils\util\util.js:999:50)
at walk (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:122:37)
at Rule.AbstractRule.applyWithFunction (*****\node_modules\tslint\lib\language\rule\abstractRule.js:39:9)
at Rule.apply (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:36:21)
at Linter.applyRule (*****\node_modules\tslint\lib\linter.js:214:29)
at *****\node_modules\tslint\lib\linter.js:155:85
at Object.flatMap (*****\node_modules\tslint\lib\utils.js:160:29)
at Linter.getAllFailures (*****\node_modules\tslint\lib\linter.js:155:32)
The 'import-blacklist' rule threw an error in '*****/src/*****.ts':
TypeError: Cannot read property 'kind' of undefined
at ImportFinder._findImports (*****\node_modules\tsutils\util\util.js:1037:47)
at ImportFinder.find (*****\node_modules\tsutils\util\util.js:1025:14)
at Object.findImports (*****\node_modules\tsutils\util\util.js:999:50)
at walk (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:122:37)
at Rule.AbstractRule.applyWithFunction (*****\node_modules\tslint\lib\language\rule\abstractRule.js:39:9)
at Rule.apply (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:36:21)
at Linter.applyRule (*****\node_modules\tslint\lib\linter.js:214:29)
at *****\node_modules\tslint\lib\linter.js:155:85
at Object.flatMap (*****\node_modules\tslint\lib\utils.js:160:29)
at Linter.getAllFailures (*****\node_modules\tslint\lib\linter.js:155:32)
The 'import-blacklist' rule threw an error in '*****/src/*****.ts':
TypeError: Cannot read property 'kind' of undefined
at ImportFinder._findImports (*****\node_modules\tsutils\util\util.js:1037:47)
at ImportFinder.find (*****\node_modules\tsutils\util\util.js:1025:14)
at Object.findImports (*****\node_modules\tsutils\util\util.js:999:50)
at walk (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:122:37)
at Rule.AbstractRule.applyWithFunction (*****\node_modules\tslint\lib\language\rule\abstractRule.js:39:9)
at Rule.apply (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:36:21)
at Linter.applyRule (*****\node_modules\tslint\lib\linter.js:214:29)
at *****\node_modules\tslint\lib\linter.js:155:85
at Object.flatMap (*****\node_modules\tslint\lib\utils.js:160:29)
at Linter.getAllFailures (*****\node_modules\tslint\lib\linter.js:155:32)
The 'import-blacklist' rule threw an error in '*****/src/*****.ts':
TypeError: Cannot read property 'kind' of undefined
at ImportFinder._findImports (*****\node_modules\tsutils\util\util.js:1037:47)
at ImportFinder.find (*****\node_modules\tsutils\util\util.js:1025:14)
at Object.findImports (*****\node_modules\tsutils\util\util.js:999:50)
at walk (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:122:37)
at Rule.AbstractRule.applyWithFunction (*****\node_modules\tslint\lib\language\rule\abstractRule.js:39:9)
at Rule.apply (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:36:21)
at Linter.applyRule (*****\node_modules\tslint\lib\linter.js:214:29)
at *****\node_modules\tslint\lib\linter.js:155:85
at Object.flatMap (*****\node_modules\tslint\lib\utils.js:160:29)
at Linter.getAllFailures (*****\node_modules\tslint\lib\linter.js:155:32)
The 'import-blacklist' rule threw an error in '*****/src/*****.ts':
TypeError: Cannot read property 'kind' of undefined
at ImportFinder._findImports (*****\node_modules\tsutils\util\util.js:1037:47)
at ImportFinder.find (*****\node_modules\tsutils\util\util.js:1025:14)
at Object.findImports (*****\node_modules\tsutils\util\util.js:999:50)
at walk (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:122:37)
at Rule.AbstractRule.applyWithFunction (*****\node_modules\tslint\lib\language\rule\abstractRule.js:39:9)
at Rule.apply (*****\node_modules\tslint\lib\rules\importBlacklistRule.js:36:21)
at Linter.applyRule (*****\node_modules\tslint\lib\linter.js:214:29)
at *****\node_modules\tslint\lib\linter.js:155:85
at Object.flatMap (*****\node_modules\tslint\lib\utils.js:160:29)
at Linter.getAllFailures (*****\node_modules\tslint\lib\linter.js:155:32)
The 'import-blacklist' rule threw an error in '*****/src/*****.ts':
...
lots of more errors
...
in yarn.lock
I saw that Typescript v2 was required by an old package called typings
, I removed it and now it's all good