angular-cli: Using invalid environment causes error in build (was "ERROR in Cannot read property 'length' of undefined")

(on existing project, on windows10) After updating :

  1. cli 31 to rc0
  2. angular packages to rc1
  3. typescript to 2.1.6

I get this insignifiant message error when running ng serve or ng build:

Cannot read property ‘length’ of undefined TypeError: Cannot read property ‘length’ of undefined

What does this mean ?

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Reactions: 72
  • Comments: 169 (27 by maintainers)

Commits related to this issue

Most upvoted comments

Probably not the same cause but we had the same error (Cannot read property 'length' of undefined) when we accidentally deleted environment.prod.ts during a refactoring process. Restoring this file solved our problem.

I think in many cases this issue is caused when typescript tries to process a file that doesn’t exist. In one of my projects it was a missing .d.ts file. In another it was a missing environment ts file. Adding a console.log(fileName) in the beginning of the createSourceFile function at node_modules/typescript/lib/typescript.js helped me pinpoint the specific file. Remember to remove the changes or just reinstall your node_modules.

This is a real issue and we will look at it.

I found a way to know which file is missing or with the wrong configuration. Open the typescript.js (node_modules/typescript/lib/typescript.js) and add a console.log("fileName " + fileName); in the first line of the createSourceFile function, before the error, then you will find which file is missing.

My problem was with the main.ts file. it was looking for src/main.ts and my file was in src/app/main.ts

Hi, has anyone solved this? I am still getting the same error:

Chriss-iMac:dnd-test christarasovs$ ng serve Cannot read property ‘length’ of undefined TypeError: Cannot read property ‘length’ of undefined at createSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8980:109) at parseSourceFileWorker (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8940:26) at Object.parseSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8899:26) at Object.createSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8727:29) at WebpackCompilerHost.getSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/@ngtools/webpack/src/compiler_host.js:210:27) at findSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45859:29) at processSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45790:27) at /Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45901:17 at Object.forEach (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:1115:30) at processReferencedFiles (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45899:16) at findSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45884:21) at processSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45790:27) at processRootFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45694:13) at /Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45151:60 at Object.forEach (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:1115:30) at Object.createProgram (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45151:16) at AotPlugin._setupOptions (/Users/christarasovs/Desktop/dnd-test/node_modules/@ngtools/webpack/src/plugin.js:124:28) at new AotPlugin (/Users/christarasovs/Desktop/dnd-test/node_modules/@ngtools/webpack/src/plugin.js:23:14) at _createAotPlugin (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/models/webpack-configs/typescript.js:55:12) at Object.exports.getNonAotConfig (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/models/webpack-configs/typescript.js:70:19) at NgCliWebpackConfig.buildConfig (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/models/webpack-config.js:27:37) at Class.run (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/tasks/serve.js:37:98) at check_port_1.checkPort.then.port (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/commands/serve.js:103:26) at process._tickCallback (internal/process/next_tick.js:109:7) Chriss-iMac:dnd-test christarasovs$ ng build Cannot read property ‘length’ of undefined TypeError: Cannot read property ‘length’ of undefined at createSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8980:109) at parseSourceFileWorker (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8940:26) at Object.parseSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8899:26) at Object.createSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8727:29) at WebpackCompilerHost.getSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/@ngtools/webpack/src/compiler_host.js:210:27) at findSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45859:29) at processSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45790:27) at /Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45901:17 at Object.forEach (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:1115:30) at processReferencedFiles (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45899:16) at findSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45884:21) at processSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45790:27) at processRootFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45694:13) at /Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45151:60 at Object.forEach (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:1115:30) at Object.createProgram (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45151:16) at AotPlugin._setupOptions (/Users/christarasovs/Desktop/dnd-test/node_modules/@ngtools/webpack/src/plugin.js:124:28) at new AotPlugin (/Users/christarasovs/Desktop/dnd-test/node_modules/@ngtools/webpack/src/plugin.js:23:14) at _createAotPlugin (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/models/webpack-configs/typescript.js:55:12) at Object.exports.getNonAotConfig (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/models/webpack-configs/typescript.js:70:19) at NgCliWebpackConfig.buildConfig (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/models/webpack-config.js:27:37) at Class.run (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/tasks/build.js:26:92) at Class.run (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/commands/build.js:143:26) at Class.<anonymous> (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/ember-cli/lib/models/command.js:134:17) at process._tickCallback (internal/process/next_tick.js:109:7) Chriss-iMac:dnd-test christarasovs$ ng serve /Users/christarasovs/Desktop/dnd-test/src/app/app.component.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/index.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/core.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/metadata.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/metadata/di.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/di/opaque_token.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/type.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/metadata/directives.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/animation/metadata.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/change_detection/constants.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/di.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/di/metadata.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/di/forward_ref.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/di/injector.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/di/reflective_injector.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/di/provider.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/di/reflective_provider.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/di/reflective_key.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/util/decorators.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/metadata/view.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/metadata/lifecycle_hooks.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/change_detection/change_detection_util.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/facade/lang.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/metadata/ng_module.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/version.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/util.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/application_ref.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/error_handler.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/application_init.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/console.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/compiler.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/facade/errors.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/component_factory.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/change_detection/change_detection.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/change_detection/differs/iterable_differs.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/change_detection/change_detector_ref.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/change_detection/differs/keyvalue_differs.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/change_detection/differs/default_iterable_differ.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/change_detection/differs/default_keyvalue_differ.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/change_detection/pipe_transform.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/element_ref.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/view.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/render/api.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/animation/animation_keyframe.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/animation/animation_styles.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/animation/animation_player.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/animation_view_context.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/animation/animation_queue.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/zone/ng_zone.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/facade/async.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/rxjs/Subject.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/rxjs/Operator.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/rxjs/Subscriber.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/rxjs/Observer.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/rxjs/Subscription.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/rxjs/Observable.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/rxjs/observable/IfObservable.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/rxjs/observable/ErrorObservable.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/rxjs/Scheduler.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/rxjs/scheduler/Action.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/debug_context.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/view_container.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/view_container_ref.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/template_ref.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/view_ref.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/view_type.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/view_utils.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/security.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/ng_module_factory.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/component_factory_resolver.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/testability/testability.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/application_tokens.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/zone.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/render.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/ng_module_factory_loader.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/query_list.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/linker/system_js_ng_module_factory_loader.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/debug/debug_node.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/facade/collection.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/change_detection.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/platform_core_providers.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/i18n/tokens.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/application_module.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/profile/profile.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/profile/wtf_impl.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/core_private_export.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/animation/animation_constants.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/animation/animation_group_player.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/animation/animation_sequence_player.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/animation/animation_style_util.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/animation/animation_transition.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/animation/animation_transition_event.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/debug/debug_renderer.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/reflection/reflection.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/reflection/reflector.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/reflection/platform_reflection_capabilities.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/reflection/types.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/reflection/reflector_reader.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/reflection/reflection_capabilities.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/core/src/util/lang.d.ts /Users/christarasovs/Desktop/dnd-test/src/app/app.module.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/index.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/platform-browser.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/browser.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/animation_driver.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/private_import_core.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/browser/title.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/browser/tools/tools.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/debug/by.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/facade/collection.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/debug/ng_probe.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/dom_tokens.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/events/event_manager.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/events/hammer_gestures.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/security/dom_sanitization_service.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/private_export.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/browser/browser_adapter.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/browser/generic_browser_adapter.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/dom_adapter.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/browser/location/browser_platform_location.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/index.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/common.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/location/index.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/location/platform_location.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/location/location_strategy.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/location/hash_location_strategy.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/location/path_location_strategy.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/location/location.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/localization.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/common_module.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/directives/index.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/directives/ng_class.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/directives/ng_for.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/directives/ng_if.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/directives/ng_plural.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/directives/ng_switch.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/directives/ng_style.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/directives/ng_template_outlet.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/pipes/index.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/pipes/async_pipe.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/facade/async.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/pipes/date_pipe.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/pipes/i18n_plural_pipe.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/pipes/i18n_select_pipe.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/pipes/json_pipe.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/pipes/lowercase_pipe.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/pipes/number_pipe.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/pipes/slice_pipe.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/pipes/uppercase_pipe.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/common/src/version.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/browser/testability.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/dom_renderer.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/shared_styles_host.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/events/dom_events.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/events/key_events.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/web_animations_driver.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/web_animations_player.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/dom/dom_animate_player.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/platform-browser/src/version.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/index.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/forms.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/abstract_control_directive.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/facade/async.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/model.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/validators.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/abstract_form_group_directive.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/control_container.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/form_interface.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/ng_control.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/control_value_accessor.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/checkbox_value_accessor.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/default_value_accessor.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/ng_control_status.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/ng_form.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/ng_model.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/ng_model_group.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/radio_control_value_accessor.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/reactive_directives/form_control_directive.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/reactive_directives/form_control_name.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/reactive_directives/form_group_directive.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/reactive_directives/form_group_name.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/select_control_value_accessor.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/directives/select_multiple_control_value_accessor.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/form_builder.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/validators.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/version.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/forms/src/form_providers.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/index.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/index.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/backends/browser_xhr.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/backends/jsonp_backend.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/base_response_options.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/headers.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/interfaces.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/enums.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/static_request.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/body.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/url_search_params.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/static_response.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/backends/browser_jsonp.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/backends/xhr_backend.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/base_request_options.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/http.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/http_module.d.ts /Users/christarasovs/Desktop/dnd-test/node_modules/@angular/http/src/version.d.ts /Users/christarasovs/Desktop/dnd-test/src/app/dnd/dnd.component.ts /Users/christarasovs/Desktop/dnd-test/src/app/dnd/text/text.component.ts /Users/christarasovs/Desktop/dnd-test/src/app/ng2-dnd/config/testing-utils.ts /Users/christarasovs/Desktop/dnd-test/src/app/ng2-dnd/node_modules/@types/jasmine/index.d.ts Cannot read property ‘length’ of undefined TypeError: Cannot read property ‘length’ of undefined at createSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8982:109) at parseSourceFileWorker (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8942:26) at Object.parseSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8901:26) at Object.createSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:8729:29) at WebpackCompilerHost.getSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/@ngtools/webpack/src/compiler_host.js:210:27) at findSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45861:29) at processSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45792:27) at /Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45903:17 at Object.forEach (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:1116:30) at processReferencedFiles (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45901:16) at findSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45886:21) at processSourceFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45792:27) at processRootFile (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45696:13) at /Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45153:60 at Object.forEach (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:1116:30) at Object.createProgram (/Users/christarasovs/Desktop/dnd-test/node_modules/typescript/lib/typescript.js:45153:16) at AotPlugin._setupOptions (/Users/christarasovs/Desktop/dnd-test/node_modules/@ngtools/webpack/src/plugin.js:124:28) at new AotPlugin (/Users/christarasovs/Desktop/dnd-test/node_modules/@ngtools/webpack/src/plugin.js:23:14) at _createAotPlugin (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/models/webpack-configs/typescript.js:55:12) at Object.exports.getNonAotConfig (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/models/webpack-configs/typescript.js:70:19) at NgCliWebpackConfig.buildConfig (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/models/webpack-config.js:27:37) at Class.run (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/tasks/serve.js:37:98) at check_port_1.checkPort.then.port (/Users/christarasovs/Desktop/dnd-test/node_modules/@angular/cli/commands/serve.js:103:26) at process._tickCallback (internal/process/next_tick.js:109:7) Chriss-iMac:dnd-test christarasovs$

guys thanks to solve this bug to me ! i effectivly had this /// reference to .d.ts file not exist anymore in angular4 !

one of my team member import this file accidently, he don’t remember why he did this, this file was available before in ng 2.x (i think) <reference path="../../../../../node_modules/@angular/core/src/facade/async.d.ts"/>

in another file he imported isPresent from "@angular/core/src/facade/lang" but this isPresent is now in this path "@angular/core/typings/src/facade/lang";

ps: i still not understand what is this isPresent but good no more this insignifiant error1

I let this issue open until a team memeber improve message error terminal cc @ctaepper @calebkiage , @hansl

I fixed this by making sure my main property pointed to my main.ts relative to the root property. Since my root is set to src and main.ts is at src/app/main.ts I changed my main property to app/main.ts.

I think I have narrowed down the cause of this error. My environment files etc all appear to match those of a new ng5 app so that wasn’t my issue. This line in the @ngtools/webpack plugin is why my tests fail on the second run: https://github.com/angular/angular-cli/blob/master/packages/%40ngtools/webpack/src/plugin.ts#L622-L624

this._discoveredLazyRoutes = this.firstRun
    ? this._getLazyRoutesFromNgtools()
    : this._findLazyRoutesInAst();

It looks like there is a bug in _findLazyRoutesInAst() that only affects ng4 apps.

this._getLazyRoutesFromNgtools() Works fine and is used on the first pass. this._findLazyRoutesInAst(); Is used on the second pass and always results in an eventual length of undefined error.

I am going to debug a little more and see what each function returns. For now, locally, replacing that ternary statement with this._discoveredLazyRoutes = this._getLazyRoutesFromNgtools(); allows me to run my tests normally.

So, managed to trace back the issue. In my case, downgrading @angular/cli from 1.6.3 to 1.6.1 made it work. Not sure what exactly the issue is but I just ended up looking for differences in package-lock.json. Hope it helps!

I have the same issue in one of my projects. What is different is that this happens only on ng-test hot reload. So, the first run it works, then, if I save any file it fails. ng-serve works with hot-reload just fine. So, I added console.log in the createSourceFile method and this is what it says: Filename to create: /Users/utukku/Documents/Projects/frontend-app/src

So, it’s not even a file. It’s a folder. Not sure what to make of this. Any help is highly appreciated.

additional info : I tried in green project “ng new mynewproject --ng4it work well, it run!

then move all my old /app folder to this new one and I get same error !

apparently the issue is in my code/module … My project is relativly big I can’t remove module by module 😦

how achieve this ? can I get more signifiant message error

thanks

Apart from the lack of a descriptive message (which is the main focus for this issue), should anyone run into this case, don’t panic - chances are that it’s just a temporary glitch. I ran into this situation twice and it looked like a local problem with syncing files. The second incident of mine was a bit more clear to me - it followed a git pull. Waiting ca 1 minute and rebooting ng serve cured the app and restored its running state.

FWIW: Since this is ng serve reboot that helps, I would recommend to look closer at the angular-cli.json file - perhaps into the apps.assets item which has been made a mandatory array if I am correct (meaning it does not accept a single string anymore).

I just had the same issue, and got to resolve it by changing the path to the enviroments folder in my .angular-cli.json. From this:

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

To this:

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

Be sure that you’ve the reference to the files right.

I have the same problem when running karma unit tests. here is my findings

one of my unit test will write data to a json file. and i get this error

ERROR in TypeError: Cannot read property 'length' of undefined
    at createSourceFile (...\node_modules\typescript\lib\typescript.js:15460:109)
    at parseSourceFileWorker (...\node_modules\typescript\lib\typescript.js:15389:26)
    at Object.parseSourceFile (...\node_modules\typescript\lib\typescript.js:15338:26)
    at Object.createSourceFile (...\node_modules\typescript\lib\typescript.js:15192:29)
    at new TypeScriptFileRefactor (...\node_modules\@ngtools\webpack\src\refactor.js:79:35)
    at Object.findLazyRoutes (...\node_modules\@ngtools\webpack\src\lazy_routes.js:18:22)
    at AotPlugin._findLazyRoutesInAst (...\node_modules\@ngtools\webpack\src\plugin.js:220:50)
    at _donePromise.Promise.resolve.then.then.then.then.then (...\node_modules\@ngtools\webpack\src\plugin.js:499:24)
    at process._tickCallback (internal/process/next_tick.js:109:7)

I added a console.log statements at createSourceFile() and at AotPlugin._findLazyRoutesInAst.

i noticed the following in AotPlugin._findLazyRoutesInAst. for (const filePath of changedFilePaths) { }. I added a console.log statement to see what was in the changedFilePaths, I noticed the following:

These are changedFilePaths ==> 
 [ '.../src/polyfills.ts',
  '.../src'      <--- Please note the missing file name.
 ]

Hence, i am getting the above error.

This happens when i make changes to any files (irrespective of .ts files). I tried modifying a json file and the above happened. I tried the following: in karma.conf.js (as per the official config docs, i added exclude: ["./src/nonCodeRelatedData/**"]. and files: [ {pattern: "./src/nonCodeRelatedData/**", watched: false, included: false, served: false}] But no luck.

Could someone point me the remedy to this problem? Any help is greatly appreciated.

Checking out from the repository into a new directory and running npm install fixed the issue - the files are the same. The project in the original directory became suddenly unusable - was not able to find out the reason.

This may also happen, when you have defined an environment-file in .angular-cli.json but the environment.ts file it self doesn’t exist.

@ChrisTarasovs can you read this tread please because as said you can find error using this adivce

Adding a console.log(fileName) in the beginning of the createSourceFile function at node_modules/typescript/lib/typescript.js helped me pinpoint the specific file.

Issue was resolved by adding an environment.prod.ts file as stated by @moosetraveller. Thanks! Though, an error message more appropriate to the cause would be much appreciated.

@moosetraveller Thanks a lot. This actually happened to be the issue. On our staging server we had no environment file set up.

This error seem to have different reasons and different solutions. In my case I had a reference ///<reference path="..\..\..\typings\globals\google.maps\index.d.ts" /> pointing to a file that did not exist.

i had the same problem, other cause: one of my dependencies referenced a .d.ts file which was simply not there (https://github.com/swimlane/ngx-charts/blob/master/release/d3.js#L1) if i run ng build without aot and prod flag, it would try to lookup that file which resultet in that error

anyway, now i am not sure, if i am doing it wrong, or if @swimlane has an error here…

I followed the instruction to put a console.log() call in typescript.js. Funnily, my angular project fails when it tries to read:

0% compiling
Trying to read file: /home/js/myproject/src

Obviously, this isn’t a source file - it’s a directory where my sources are kept, but for some reason ng cli tries to read it like it was a file and fails miserably. Any ideas what might be wrong in this case?

Same here, running unit tests in watch mode results in this issue on re-build. Downgrading to Angular CLI 1.6.1 seems to fix it (temporarily).

https://github.com/angular/devkit/pull/667 should fix this in 6.0 by failing early when the specified environment file (it will be called fileReplacements in v6) does not exist.

It seems to be an issiue of file/files cannot find in app. I spent some 2-3 hours but resolved with including environments directory to project re-install from repo etc.

In my case, it’s the same what @samupl has reported. A directory is passed to to TypeScript’s createSourceFile method by TypeScriptFileRefactor constructor.

I’ve bumped into this issue when I’ve implemented dynamic stories loading in Storybook. By using require.context to search for files in a specific directory webpack starts watching the directory alongside the files and this directory is passed to createSourceFile when a change happens.

I’m not sure who is to blame for not skipping directories in the course of events leading to createSourceFile call.

I am actually able to run ng serve and ng test normally, the watcher works well for ng serve, but I got this error when I update any file while I am on ng test, after looking at the comments, I made sure I have environment.ts and no issues on my tests.ts (even rolling back to previous versions). Doing what @mhamel06 worked well, but I was wondering if there is something else that we can check on our end just to fix the watcher loop on ng test mode, any thoughts on karma.conf and webpack conf maybe just to avoid this?.

I have the same issue (more accurately described in 9558 since it has to do with re-loads, the test runner works fine on the first ng test). I downgraded the CLI temporarily to 1.6.1 but in doing so, I had to install @angular-devkit/core as a dev dependency (yarn add --dev @angular-devkit/core) as well to get it to compile.

For me it was missing environment files. Adding them fix the issue

Adding missing environment file fixed this form me.

I stopped ng serve and restarted it, now the error message is gone.

Having looked at my .angular-cli.json file.

I noticed that the environment.prod.ts and environment.dev.ts files were missing. Adding these files in has fixed this for me.

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

@istiti

content of my environment.prod.ts:

export const environment = {
  production: true,
  silent: false
};

Maybe, there are additional causes for this issue. CLI error message is misleading in this case.

nop, it’s not same cause… I have this file under src/environments/environments.prod.ts

cc @moosetraveller

I have the same issue on ubuntu 14.04 with node 7.6.0, npm 4.1.2 when running: ng build. works on my windows machine. here is my package.json.

"dependencies": {
    "@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",
    "@ngx-translate/core": "^6.0.0",
    "@ngx-translate/http-loader": "0.0.3",
    "bootstrap-sass": "^3.3.6",
    "core-js": "^2.4.1",
    "intl": "^1.2.4",
    "jquery-ui": "^1.12.0",
    "moment": "^2.13.0",
    "ng2-bootstrap": "^1.1.2",
    "ng2-file-upload": "^1.1.0",
    "ng2-toastr": "^1.5.1",
    "ng2-ui-auth": "^6.1.3",
    "node-sass": "^3.7.0",
    "primeng": "^2.0.1",
    "primeui": "^4.1.15",
    "rxjs": "^5.1.0",
    "zone.js": "^0.7.6"
  },
  "devDependencies": {
    "@angular/cli": "^1.0.0-rc.0",
    "@angular/compiler-cli": "^2.4.0",
    "@types/jasmine": "2.5.38",
    "@types/node": "~6.0.60",
    "codelyzer": "~2.0.0",
    "jasmine-core": "~2.5.2",
    "jasmine-spec-reporter": "~3.2.0",
    "karma": "~1.4.1",
    "karma-chrome-launcher": "~2.0.0",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^0.2.0",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.0",
    "ts-node": "~2.0.0",
    "tslint": "~4.4.2",
    "typescript": "~2.0.0"
  }

Provide your .angular-cli.json, please.

The above comment about the environment file caught my attention. I was with the same problem and looking at my .angular-cli.json I could fix and reproduce the error when one of those files below were missing:

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

So, those files must exist otherwise this error will happen. The cli could raise a more meaningful error message.

I had a similar message recently when I added some new environments files in the angular-cli.json

        "prod": "environments/environment.prod.ts",
        "xamp": "environments/environment.xamp..ts"

The problem was I misstyped the name of one of the files: environment.xamp**.**.ts (I typed twice the dot)

I was very hard to figure what was wrong with my project (I knew only it had to be something with the environments files). A nice error sugesting about how i misspelled the files would have been perfect 😕

Thank you for a quick reply, @filipesilva.

After few hours of debugging, I think the problem was introduced by setting a filename to CompilerHost._changedFiles even if the filename is not present in CompilerHost._files array introduced in commit to avoid caching binary resources as UTF8.

That way when a directory is passed to CompilerHost.invalidate method it is handled as a file causing issue mentioned above.

What was the motivation for the change? It seems unrelated to other changes introduced in that commit.

Thanks so much @simonneedham, problem solved, in my own case, i compared the .angular-cli.json file with an old backup i did and i noticed the “main”: “app/main.ts”, line is having app so i removed the app and ng serve and it started working again.

@kelvinrolex Most people are seeing this error when there is a filepath configured in the .angular-cli.json that the cli can’t find in your project directory. Quite often it appears to be a missing environment.ts but It’s going to be a case of checking each file in turn and making sure the filepath is correct.

@unsama simply do: if(data && data.length > 0)

I’ve received this error when a generated (and referenced) d.ts file was missing. If you receive the error the issue is probably in you project…

/// <reference path="../../someFileThatDidntExist.d.ts" />

@istiti sure, here is angular-cli.json and package.json

package.json { “name”: “testing”, “version”: “0.0.0”, “license”: “MIT”, “angular-cli”: {}, “scripts”: { “ng”: “ng”, “start”: “ng serve”, “test”: “ng test”, “pree2e”: “webdriver-manager update --standalone false --gecko false”, “e2e”: “protractor” }, “private”: true, “dependencies”: { “@angular/common”: “^2.3.1”, “@angular/compiler”: “^2.3.1”, “@angular/core”: “^2.3.1”, “@angular/forms”: “^2.3.1”, “@angular/http”: “^2.3.1”, “@angular/platform-browser”: “^2.3.1”, “@angular/platform-browser-dynamic”: “^2.3.1”, “@angular/router”: “^3.3.1”, “core-js”: “^2.4.1”, “rxjs”: “^5.2.0”, “ts-helpers”: “^1.1.1”, “typescript”: “^2.0.10”, “zone.js”: “^0.7.7” }, “devDependencies”: { “@angular/compiler-cli”: “^2.3.1”, “@types/jasmine”: “2.5.38”, “@types/node”: “^6.0.42”, “angular-cli”: “1.0.0-beta.28.3”, “codelyzer”: “~2.0.0-beta.1”, “jasmine-core”: “2.5.2”, “jasmine-spec-reporter”: “2.5.0”, “karma”: “1.2.0”, “karma-chrome-launcher”: “^2.0.0”, “karma-cli”: “^1.0.1”, “karma-jasmine”: “^1.0.2”, “karma-remap-istanbul”: “^0.2.1”, “protractor”: “~4.0.13”, “ts-node”: “1.2.1”, “tslint”: “^4.3.0”, “typescript”: “~2.0.3” } }

angular-cli.json { “project”: { “version”: “1.0.0-beta.28.3”, “name”: “testing” }, “apps”: [ { “root”: “src”, “outDir”: “dist”, “assets”: [ “assets”, “favicon.ico” ], “index”: “index.html”, “main”: “main.ts”, “polyfills”: “polyfills.ts”, “test”: “test.ts”, “tsconfig”: “tsconfig.json”, “prefix”: “app”, “styles”: [ “styles.css” ], “scripts”: [], “environments”: { “source”: “environments/environment.ts”, “dev”: “environments/environment.ts”, “prod”: “environments/environment.prod.ts” } } ], “e2e”: { “protractor”: { “config”: “./protractor.conf.js” } }, “lint”: [ { “files”: “src//*.ts", “project”: “src/tsconfig.json” }, { “files”: "e2e//*.ts”, “project”: “e2e/tsconfig.json” } ], “test”: { “karma”: { “config”: “./karma.conf.js” } }, “defaults”: { “styleExt”: “css”, “prefixInterfaces”: false, “inline”: { “style”: false, “template”: false }, “spec”: { “class”: false, “component”: true, “directive”: true, “module”: false, “pipe”: true, “service”: true } } }

Thank you @istiti I did read and tried several time what was said. So above function createSourceFile(fileName, sourceText, languageVersion, setParentNodes, scriptKind) { I have added console.log(fileName); on line 8724 , right above the function and tried inside the function also.

but than I run ng serve and I get the same issue as I get just the same error. Don’t seem to understand how you can get the ouput of console.log if that is shown in the browser but I can even load the page?

Currently I got fallbackLoader option has been deprecated - replace with “fallback” loader option has been deprecated - replace with “use” fallbackLoader option has been deprecated - replace with “fallback” loader option has been deprecated - replace with “use” fallbackLoader option has been deprecated - replace with “fallback” loader option has been deprecated - replace with “use” fallbackLoader option has been deprecated - replace with “fallback” loader option has been deprecated - replace with “use” Cannot read property ‘length’ of undefined TypeError: Cannot read property ‘length’ of undefined at createSourceFile (C:\Users\ctarasovs\AppData\Roaming\npm\node_modules\ang ular-cli\node_modules\typescript\lib\typescript.js:8980:109) at parseSourceFileWorker (C:\Users\ctarasovs\AppData\Roaming\npm\node_module s\angular-cli\node_modules\typescript\lib\typescript.js:8940:26) at Object.parseSourceFile (C:\Users\ctarasovs\AppData\Roaming\npm\node_modul es\angular-cli\node_modules\typescript\lib\typescript.js:8899:26) at Object.createSourceFile (C:\Users\ctarasovs\AppData\Roaming\npm\node_modu les\angular-cli\node_modules\typescript\lib\typescript.js:8727:29) …

The strange thing here: the project with angular-cli rc.0 was working fine till executing the first ng build --target=production (maybe just a coincidence). Since then the project is broken. ng serve gives the same error now.

When I setup a new project, it is possible to build.

I removed and reinstalled angular-cli like documented (including node_modules) - the same. Also downgraded Typescript to 2.0.0 like the default for a blank project and took all possible settings of a blank project.

This error should be improved… for instance… in most of the cases is the environment.xxx.ts missing… so a message where file could not be found would be nice!

I have modified this file and it works fine, but it will never be fixed in any new version? This is my solution, it’s similar to @ atariman5000 but inside an for:

_findLazyRoutesInAst() {
  benchmark_1.time('AotPlugin._findLazyRoutesInAst');`
  const result = Object.create(null);`
  const changedFilePaths = this._compilerHost.getChangedFilePaths();`

  for (const filePath of changedFilePaths) {
 >> if(filePath.match(/.*\/*\.[A-Za-z]*$/)) {
      const fileLazyRoutes = lazy_routes_1.findLazyRoutes(filePath, this._compilerHost, this._program);
      for (const routeKey of Object.keys(fileLazyRoutes)) {
        const route = fileLazyRoutes[routeKey];
        if (routeKey in this._lazyRoutes) {
          if (route === null) {
             this._lazyRoutes[routeKey] = null;
          }
          else if (this._lazyRoutes[routeKey] !== route) {
             this._compilation.warnings.push(new Error(`Duplicated path in loadChildren detected during a rebuild. `
                    + `We will take the latest version detected and override it to save rebuild time. `
                    + `You should perform a full build to validate that your routes don't overlap.`));
           }
         }
         else {
            result[routeKey] = route;
         }
      }
    }
  }
  benchmark_1.timeEnd('AotPlugin._findLazyRoutesInAst');
  return result;
} 

I too like others found the problem to be with the “plugin.js” file within “node_modules@ngtools\webpack\src\plugin.js”. The problem is with the “_findLazyRoutesInAst()” function. This function is called on the second pass when running your unit test (w/ Karma). This function only looks at files that have been modified, and there is a file path in the array “this._compilerHost.getChangedFilePaths()” that ends with “/src”, and all of the other paths end with .ts files. To resolve this problem, I check the file path to see if it ends with “.ts”, and if so, I push that path into an array. Below is my solution to this problem. I would like to submit this as a bug fix, but I do not know where to do so.

------- plugin.js : ln 211 -------

_findLazyRoutesInAst() { benchmark_1.time(‘AotPlugin._findLazyRoutesInAst’); const result = Object.create(null); var changedFilePaths = []; this._compilerHost.getChangedFilePaths().forEach(f => { if(f.endsWith(“.ts”)) { changedFilePaths.push(f); } }); for (const filePath of changedFilePaths) { const fileLazyRoutes = lazy_routes_1.findLazyRoutes(filePath, this._compilerHost, this._program);

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

To me removing comments from the environments files worked 👍 🔢

I created this patch for version 1.7.3 , you can apply the patch to node_modules/@ngtools/webpack/src/plugin.js and you should be good to go.

493c492,494
<             this._discoveredLazyRoutes = this._getLazyRoutesFromNgtools();
---
>             this._discoveredLazyRoutes = this.firstRun
>                 ? this._getLazyRoutesFromNgtools()
>                 : this._findLazyRoutesInAst();

I ran into this error, finally, I found out it was because a typo (exclamation mark inside the string interpolation). I wrote:

‘Server with ID {{ serverId }} is {{ serverStatus! }}’

instead of

‘Server with ID {{ serverId }} is {{ serverStatus }}!’

Just 4 Info, i had same Problem and i went almost crazy…

Cannot read property 'length' of undefined TypeError: Cannot read property 'length' of undefined at createSourceFile (C:\DEV\AFB\varias-bepro\bepro-frontend\src\main\frontend\node_modules\typescript\lib\typescrip t.js:14652:110)

But you know what the problem was?

at the beginning of one of my .ts file was a line like this:

///<reference path="../../../generated/rest/model/Template.ts"/> import {Component, OnDestroy, OnInit} from '@angular/core'; import {FormGroup} from '@angular/forms';

This caused the error! Without any hint. Nothing. I thought my enviroment is broken, some wrong version or something like that. I removed the line and it worked. But i still don’t know how the line got there in the first place…

I hope it helps somebody.

Reverting to 1.6.1 fixed it temporarily for me. I couldn’t figure out what file was giving the trouble.

I encountered this error when I started using custom environments. The problem was in my .angular-cli.json, it was a simple typo (made by me!):

broken:

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

fixed:

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

The error message was pretty unhelpful, luckily I noticed the typo!

ERROR in TypeError: Cannot read property ‘length’ of undefined at createSourceFile (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:16640:110) at parseSourceFileWorker (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:16572:26) at Object.parseSourceFile (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:16521:26) at Object.createSourceFile (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:16371:29) at VirtualFileStats.getSourceFile (D:\Richard\Documents\workspace\registerinterest\node_modules@ngtools\webpack\src\compiler_host.js:67:35) at WebpackCompilerHost.getSourceFile (D:\Richard\Documents\workspace\registerinterest\node_modules@ngtools\webpack\src\compiler_host.js:207:38) at findSourceFile (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:70246:29) at processImportedModules (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:70393:25) at findSourceFile (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:70274:17) at processImportedModules (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:70393:25) at findSourceFile (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:70274:17) at processImportedModules (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:70393:25) at findSourceFile (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:70274:17) at processImportedModules (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:70393:25) at findSourceFile (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:70274:17) at args (D:\Richard\Documents\workspace\registerinterest\node_modules\typescript\lib\typescript.js:70200:85)

Had this issue when run: ng build --prod

Fixed by:

npm uninstall -g @angular/cli npm uninstall --save-dev @angular/cli npm install -g @angular/cli@1.6.1

rmdir /s node_modules npm install --save-dev @angular/cli@1.6.0 npm install

also, add environment.prod.ts under \src\environments export const environment = { production: true };

So ran into this issue and was stuck on it for two days. Checked all environment.ts files and additional file paths in angular-cli.json Angular refused to rebuild after I made any change. I tried the following before resorting to the fix below:

  • Clearing out the node_modules using rm -rf node_modules/* and then doing a fresh npm install

  • Re-cloning the entire repo

Finally the only thing that resolved my issue was downgrading the @ngtools/webpack plugin from version 1.9.0 to 1.8.2

I am not sure if this is the right fix, but it worked for me. I’m adding this comment here because it might save someone some time down the line.

My Configuration: OS: Mac OSX El Capitan 10.11.6 "@angular/cli": "1.4.2" "typescript": "~2.3.3" "webpack": "~3.5.5"

Everyone look at the lines below this one: https://github.com/angular/angular-cli/blob/4b0c7a35359effc1d93cd3bb5ddc5c441b3cf154/packages/%40ngtools/webpack/src/angular_compiler_plugin.ts#L157 That basePath variable is not used anywhere, and the actual config basePath gets reset to the current directory anyway… and later on in the execution jumping through some unintelligible code, ends up here: https://github.com/angular/angular-cli/blob/4b0c7a35359effc1d93cd3bb5ddc5c441b3cf154/packages/%40ngtools/webpack/src/refactor.ts#L107 source || _host.readFile(fileName) is undefined. So basically if you move the files you wanna compile somewhere outside you get this. Can someone explain this nonsense code here?

I got this similar issue when I moved one file to another directive during watch mode (ng serve). After doing ng build the issue got resolved!

I fixed this issue by making sure the names in .angular-cli.json for environment files were pointing to the right place.

Eg. I had:

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

and should have had:

    "environmentSource": "src/environments/environment.ts",
      "environments": {
        "dev": "src/environments/environment.ts",
        "devServer": "src/environments/environment.dev.ts",
        "prod": "src/environments/environment.prod.ts"
      }

It was erroring on finding the right file (as described in adding the log statement to the typescript source above), but it was pointing at the correct file name, which was odd.

This error seem to have different reasons and different solutions. In my case I had a reference ///<reference path="..\..\..\typings\globals\google.maps\index.d.ts" /> pointing to a file that did not exist.

This happened to me, somehow my ‘typings’ folder was missing, I just restored it and everything worked fine.

FWIW in my case this error tripped after a large refactor / rename exercise. It went away after I restarted ng serve.

I found the problem of my case: I change the location of tsconfig.spec.json and tsconfig.app.json up to src folder.

So when i put a console.log debug line in typescript.js line ~14877, i realized the error was in tests.js file!

So the reason was the path in tsconfig’s of files tag
“files” : [ “test.js” ] was wrong, because location changes. So i fixed than, to “files” : [ “src/test.js” ] !

This this can be the reason the this problem, for others persons. The karma start works fine now. ======================== My second case, when i ng serve, i receive the error below.

Cannot read property ‘length’ of undefined TypeError: Cannot read property ‘length’ of undefined at createSourceFile (/Users/Felipe/workspaces/workspaces/myproject/node_modules/typescript/lib/typescript.js:14877:109)

and the debug fileName - " content:/Users/Felipe/workspaces/myproject/node_modules/angular2-datatable/node_modules/@types/jasmine/index.d.ts s"

the path has the wrong root to the angular-datatable!

So i did get resolve this point.

@istiti Just to let you know that I am trying this on OS and Win system On OS I have setup with @angular 2.4.8 and on Win I have setup the latest 2.4.9

Here is the exact steps I tried

  1. Install node latest v7
  2. Install angular cli > npm install -g @angular/cli
  3. Open CMD and via CMD navigate to Desktop > cd Desktop
  4. Create an angular project via angular CLI > ng new testNg
  5. Navigate to project > cd testing
  6. Run ng serve to launch > ng serve ( response all good, page loaded)
  7. Navigate to app to add the code from github > cd src/app
  8. Clone from github using SSH into the app folder > git clone git@github.com:akserg/ng2-dnd.git
  9. Run ng server to launch > ng serve ( errors)
  10. Found out I had a missing typescript, so install typescript > npm install typescript –save 10.2 Added on type \Testing\node_modules\typescript\lib\typescript.js on line 8735 console.log(fileName); - that is inside the createSourceFile function.
  11. Found out that rxjs not installed > npm install rxjs –save
  12. Ng serve> still error
  13. Ng build > still error

Currently with the files above here is my win setup also >npm --version 4.1.2

>ng --version angular-cli: 1.0.0-beta.28.3 node: 7.7.1 os: win32 x64 @angular/common: 2.4.9 @angular/compiler: 2.4.9 @angular/core: 2.4.9 @angular/forms: 2.4.9 @angular/http: 2.4.9 @angular/platform-browser: 2.4.9 @angular/platform-browser-dynamic: 2.4.9 @angular/router: 3.4.9 @angular/compiler-cli: 2.4.9

donno why to me it isn’t resolved :S and I have this file inside my project 😒

Your .angular-cli.json looks ok, not sure what is wrong. Maybe someone else will be able to help you 😉 .

@istiti Did you use ng new to create the project?

If so, make sure that you kept all original arrays in .angular-cli.json configuration like assets, styles and scripts. I received mistake as you do, because I removed assets option from .angular-cli.json.