Skip to content

Need more error info - " Cannot read property 'length' of undefined TypeError: Cannot read property 'length' of undefined " #5132

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
ragulmathawa opened this issue Mar 1, 2017 · 23 comments

Comments

@ragulmathawa
Copy link

Please provide us with the following information:

OS?

Windows 7

Versions.

node --version
v 6.9.4
ng version
angular-cli: 1.0.0-beta.25.5
node: 6.9.4
os: win32 x64
@angular/common: 2.4.8
@angular/compiler: 2.4.8
@angular/core: 2.4.8
@angular/forms: 2.4.8
@angular/http: 2.4.8
@angular/platform-browser: 2.4.8
@angular/platform-browser-dynamic: 2.4.8
@angular/router: 3.4.8
@angular/compiler-cli: 2.4.8

Repro steps.

https://github.com/ragulmathawa/cutom-ngx-charts

This is the git repo with code I tried.

The log given by the failure.

Cannot read property 'length' of undefined
TypeError: Cannot read property 'length' of undefined
    at createSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:8980:109)
    at parseSourceFileWorker (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:8940:26)
    at Object.parseSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:8899:26)
    at Object.createSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:8727:29)
    at WebpackCompilerHost.getSourceFile (c:\workspace\code\new\sample\node_modules\@ngtools\webpack\src\compiler_host.js:210:27)
    at findSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45859:29)
    at processSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45790:27)
    at c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45901:17
    at Object.forEach (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:1115:30)
    at processReferencedFiles (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45899:16)
    at findSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45884:21)
    at processImportedModules (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45994:25)
    at findSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45888:17)
    at processImportedModules (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45994:25)
    at findSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45888:17)
    at processImportedModules (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45994:25)
    at findSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45888:17)
    at processImportedModules (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45994:25)
    at findSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45888:17)
    at processImportedModules (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45994:25)
    at findSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45888:17)
    at processImportedModules (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45994:25)
    at findSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45888:17)
    at processImportedModules (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45994:25)
    at findSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45888:17)
    at processSourceFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45790:27)
    at processRootFile (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45694:13)
    at c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45151:60
    at Object.forEach (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:1115:30)
    at Object.createProgram (c:\workspace\code\new\sample\node_modules\typescript\lib\typescript.js:45151:16)
    at AotPlugin._setupOptions (c:\workspace\code\new\sample\node_modules\@ngtools\webpack\src\plugin.js:124:28)
    at new AotPlugin (c:\workspace\code\new\sample\node_modules\@ngtools\webpack\src\plugin.js:23:14)
    at Object.exports.getWebpackNonAotConfigPartial (c:\workspace\code\new\sample\node_modules\angular-cli\models\webpack-build-typescript.js:25:13)
    at new NgCliWebpackConfig (c:\workspace\code\new\sample\node_modules\angular-cli\models\webpack-config.js:38:46)
    at Class.run (c:\workspace\code\new\sample\node_modules\angular-cli\tasks\serve-webpack.js:23:22)
    at c:\workspace\code\new\sample\node_modules\angular-cli\commands\serve.run.js:37:22
    at process._tickCallback (internal/process/next_tick.js:103:7)

Mention any other details that might be useful.

The actual error seems to be triggered while importing LineSeriesComponent from ngx-charts module.
I need to extend the LineSeriesComponent of the ngx-charts. Even though I didn't declare CustomLineSeriesComponent in app module declarations it shows error. So it must be triggered from import.

I have seen several issues with same error but for different cases. The error must detailed and the possible cause of undefined variable should be found.

Several issues were closed by downgrading the angular-cli but we need to know the exact reason to prevent future issues.


@RicardoVaranda
Copy link
Contributor

DUPE of #5053 #5051

@ragulmathawa
Copy link
Author

Yes @RicardoVaranda I already seen those issues. But I think the reason causing these issus are different from each other.
I can pin point where the error triggers it may help to solve the problem or get some reason for the problem. So i created a new issue.
Here is my case,

The error causes because of this line
import { CustomLineSeriesComponent} from './custom-chart/line-series.component';

In line-series.component.ts i am importing a component file from ngx-charts module to extend it.
line no 6
import {LineSeriesComponent} from '@swimlane/ngx-charts/src/line-chart';

The import statement cause the error. when i remove this import statement it works good.
So it must be something related to the file import or file creation.

I hope importing a component from an external module is a right one

Please take a look at the repo.

@filipesilva
Copy link
Contributor

Dupe of #5053. It seems like the same issue and it's better to consolidate them in a single place.

@rafaelmelo007
Copy link

I temporary fixed the issue replacing the code line 14876 in "typescript.js"

from:
var sourceFile = new SourceFileConstructor(263 /* SourceFile /, /pos/ 0, / end */ sourceText.length);

to:
var sourceFile = new SourceFileConstructor(263 /* SourceFile /, /pos/ 0, / end */ sourceText ? sourceText.length : 20);

dherges added a commit to ng-hal/ng-hal that referenced this issue Mar 16, 2017
experienced the random tsc error flu

TypeError: Cannot read property 'length' of undefined
    at createSourceFile (/Users/David/Projects/github/dherges/ng-hal/demo/node_modules/@ngtools/webpack/node_modules/typescript/lib/typescript.js:8980:109)
    at parseSourceFileWorker (/Users/David/Projects/github/dherges/ng-hal/demo/node_modules/@ngtools/webpack/node_modules/typescript/lib/typescript.js:8940:26)

- angular/angular-cli#5053
- swimlane/ngx-charts#217
- angular/angular-cli#5132
- angular/angular#11789
@arlindonatal
Copy link

Hello @rafaelmelo007.

I have some problem. After replace the code in "typescript.js" returns this error:

ERROR in Cannot read property 'getSourceFile' of undefined

@tomups
Copy link

tomups commented Mar 23, 2017

I have this exact same problem as well. Happens when including a module I am developing, like to @ragulmathawa.

I have removed all external dependencies and file references from the module just to try, but I still get the same error.

I have also double checked that the main entry of package.json is correct.

If I change the line of typescript.js like @rafaelmelo007 suggested, then I get the same error as @arlindonatal above.

I'm really stumped as none of the error messages are really indicative of where the error might be.

@klferreira
Copy link

Put a console.log(fileName) in your createSourceFile() function and it will show you exactly where is the problem. Mine was environment.ts that was missing.

@vernjensen
Copy link

I am having the same problem. When I added console.log(fileName) in createSourceFile(), it seems the problem file is:

node_modules/@angular/common/index.d.ts

Why is it trying to transpile Angular files? How can I disable node_modules from being included in a build? (Or avoid this bug some other way?)

@jdthorpe
Copy link

For what it's worth, I got this error when referencing a d.ts file via: ///<reference path="./foo.d.ts" /> with an invalid path, which I discovered using @klferreira's suggestion.

@chriswhite199
Copy link

After facing a similar unhelpful stack trace myself, i can tell you that for me the issue was a typo in an environments declaration in .angular-cli.json:

  "environments": {
    "dev": "environments/environment.ts",
    "prod": "environments/environment.prod.ts",
    "e2e": "environments/environments.e2e.ts"
  }

Here the file was actually named environment.e2e.ts, so the extra 's' was the root cause. Granted my stack trace wasn't entirely the same as the original in this issue, but maybe running an strace on the build and filtering for any file-not-found responses will help you track down the root cause in this case.

@lukaszciastko
Copy link

As already suggested by @jdthorpe, I also had the very same issue due to ///<reference in my old code.

@iturn
Copy link

iturn commented Sep 7, 2017

I had the case where environment.ts was missing, and therefore this error was trown.

@ShellOliver
Copy link

It happended with me twice, when I ve renamed a component and the other case when delete one. This was just hiding another error: I forgot rename or delete others imports that was using these files. After rename and restart with ng serve, it works again.

@jellyforce
Copy link

In my case:

After changing the component name i thought that was the problem (wrong references somewhere else in my code). but that was not the case.

i forgot that i also changed the names of this "element" in the component:

selector: 'app-uitgaven-form'

On my corresponding HTML-page i did NOT change this. There it was:

<app-bon-form></app-bon-form>

after changing it to:

<app-uitgaven-form></app-uitgaven-form>

my problem was solved

@AdhamRammadan
Copy link

AdhamRammadan commented Dec 10, 2017

In My Case I Tried To Get Data From Server And Display It's Lenght In html ...

Declar a Variable Wich The Data Saves In It By Array In Constructor like :

export class DashboardComponent
{
trainers: any;

constructor(){
this.trainers= [];
}
}

and in Html :
{{ trainers.length }}

And Its Work 👍

@bebnev-pro
Copy link

bebnev-pro commented Dec 22, 2017

I have the same:
ListComponent.html:19 ERROR Error: Cannot read property 'length' of null
at viewWrappedDebugError (core.js:9795)
at callWithDebugContext (core.js:15101)
at Object.debugCheckAndUpdateView [as checkAndUpdateView] (core.js:14628)
at ViewRef_.detectChanges (core.js:11605)
at eval (core.js:5913)
at Array.forEach ()
at ApplicationRef.tick (core.js:5913)
at eval (core.js:5746)
at ZoneDelegate.invoke (zone.js:392)
at Object.onInvoke (core.js:4756)

Another pages have same errors. It working properly if user is authorised. I loss the moment when it starting to happens.

@AdhamRammadan
Copy link

AdhamRammadan commented Dec 25, 2017 via email

@bebnev-pro
Copy link

@AdhamRammadan thanks for response. I had been resolved my issue. Reason was: interceptor tried attach auth header with non-existing token (null). Hard to resolve because angular show view / html based error. Data not exists from wrong-authorised header request. In two words - it can be http / headers error.

@niikoo
Copy link

niikoo commented Feb 14, 2018

In my case i discovered that my environments.dev.ts file was missing, all of a sudden. Restored it from git and now this problem disappeared.

@tmrdurgun
Copy link

tmrdurgun commented Mar 17, 2018

I spent some 2 hours but resolved with including environments directory to project after re-install from repo etc.

@AhmedAlheesaei
Copy link

@klferreira could you please explain your way in more details
thanks in advance

@VitalyName
Copy link

I solved this problem (error during refactoring test). All is good for angular v4.3.* and v4.4*

  1. Change @angular/cli" version 1.7.3 to 1.4.10 in package.json (latest for angular4)
  2. rm -rf node_modules
  3. npm install --no-optional

@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Sep 8, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests