Ivy (9.1.5) causes build failure · Issue #36992 · angular/angular · GitHub
Skip to content

Ivy (9.1.5) causes build failure #36992

Closed

Description

@n9niwas

🐞 bug report

Affected Package

The issue is caused by package @angular/compiler-cli (ngcc)

Is this a regression?

Yes, the previous version in which this bug was not present was: `9.1.0`

Description

In JIT mode build fails with
File name 'node_modules/apollo-angular/selectpipe.d.ts' differs from already included file name 'node_modules/apollo-angular/SelectPipe.d.ts' only in casing
In AOT mode build fails with
Symbol SelectPipe declared in * is not exported from apollo-angular

🔬 Minimal Reproduction

Clone https://github.com/n9niwas/ngccbug
Run

yarn
yarn start

🔥 Exception or Error


ERROR in node_modules/apollo-angular/ApolloModule.d.ts:4:25 - error TS1149: File name '/Users/blah/Documents/ngrepros/ngccbug/node_modules/apollo-angular/selectpipe.d.ts' differs from already included file name '/Users/blah/Documents/ngrepros/ngccbug/node_modules/apollo-angular/SelectPipe.d.ts' only in casing.

4 import * as ɵngcc1 from './selectpipe';

Also if I enable aot the error is different:


ERROR in Symbol SelectPipe declared in /Users/blah/Documents/ngrepros/ngccbug/node_modules/apollo-angular/selectpipe.d.ts is not exported from apollo-angular (import into /Users/blah/Documents/ngrepros/ngccbug/src/app/app.component.ts)

This was also working fine in 9.1.0

🌍 Your Environment

Angular Version:


Angular CLI: 9.1.4
Node: 13.11.0
OS: darwin x64

Angular: 9.1.5
... animations, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Ivy Workspace: Yes

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.901.4
@angular-devkit/build-angular     0.901.4
@angular-devkit/build-optimizer   0.901.4
@angular-devkit/build-webpack     0.901.4
@angular-devkit/core              9.1.4
@angular-devkit/schematics        9.1.4
@angular/cli                      9.1.4
@ngtools/webpack                  9.1.4
@schematics/angular               9.1.4
@schematics/update                0.901.4
rxjs                              6.5.5
typescript                        3.8.3
webpack                           4.42.0

Anything else relevant?

Activity

  1. owi1972 commented on May 8, 2020

    @owi1972

    It also worked in 9.1.3

  2. sandervn commented on May 8, 2020

    @sandervn
    Contributor

    The build fails in 9.1.5 if Ivy is enabled. If it's not enabled, it succeed.

  3. wvankuipers commented on May 8, 2020

    @wvankuipers

    Just had the same issue, 9.1.4 builds fine, but 9.1.5 gives the same issue with duplicated file names and incorrect casing.

  4. wvankuipers commented on May 8, 2020

    @wvankuipers

    Probably related to #36968

  5. cedricduffournet commented on May 8, 2020

    @cedricduffournet

    Same issue with angulartics lib: angulartics/angulartics2#380

  6. petebacondarwin commented on May 8, 2020

    @petebacondarwin
    Contributor

    Thanks for the reproduction @n9niwas. It made all the difference!

    I have found the problem. It is a bug in ngcc.

    During processing ngcc is spotting that the operating system is case-insensitive and then adding imports to files with canonical paths. E.g.

    import { Apollo } from './Apollo';
    import { SelectPipe } from './SelectPipe';
    import * as ɵngcc0 from '@angular/core';
    import * as ɵngcc1 from './selectpipe';
    export declare const PROVIDERS: (typeof Apollo)[];
    export declare const DECLARATIONS: (typeof SelectPipe)[];
    export declare class ApolloModule {
        static ɵmod: ɵngcc0.ɵɵNgModuleDefWithMeta<ApolloModule, [typeof ɵngcc1.SelectPipe], never, [typeof ɵngcc1.SelectPipe]>;
        static ɵinj: ɵngcc0.ɵɵInjectorDef<ApolloModule>;
    }
    

    Note that there are two imports to the same file:

    import { SelectPipe } from './SelectPipe';
    import * as ɵngcc1 from './selectpipe';
    

    The first is from the original file. The second is added by ngcc.

    Working on a fix.

  7. tnlthanzeel commented on May 8, 2020

    @tnlthanzeel

    same issue i had this morning when i installed a clean version of angular 9 globally

    ERROR in TypeError: Cannot read property 'flags' of undefined
    at resolveAlias (D:\samples projects\angular9helloword\helloWorld\node_modules\typescript\lib\typescript.js:36513:37)
    at checkAliasSymbol (D:\samples projects\angular9helloword\helloWorld\node_modules\typescript\lib\typescript.js:64502:26)
    at checkImportBinding (D:\samples projects\angular9helloword\helloWorld\node_modules\typescript\lib\typescript.js:64534:13)
    at checkImportDeclaration (D:\samples projects\angular9helloword\helloWorld\node_modules\typescript\lib\typescript.js:64552:29) at checkSourceElementWorker (D:\samples projects\angular9helloword\helloWorld\node_modules\typescript\lib\typescript.js:64961:28)

    "devDependencies": {
    "@angular-devkit/build-angular": "~0.901.4",
    "@angular/cli": "~9.1.4",
    "@angular/compiler-cli": "~9.1.4",
    "@angular/language-service": "~9.1.4",
    "@types/node": "^12.11.1",
    "@types/jasmine": "~3.5.0",
    "@types/jasminewd2": "~2.0.3",
    "codelyzer": "^5.1.2",
    "jasmine-core": "~3.5.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~5.0.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~2.1.0",
    "karma-jasmine": "~3.0.1",
    "karma-jasmine-html-reporter": "^1.4.2",
    "protractor": "~5.4.3",
    "ts-node": "~8.3.0",
    "tslint": "~6.1.0",
    "typescript": "~3.8.3"
    }

    Angular CLI: 9.1.4
    Node: v12.13.0
    OS: windows 10
    NPM : 6.12.0

    i just did "ng new helloword" and after the project was created i tried "ng s -o" and threw the error above

    please help

  8. timonohe commented on May 8, 2020

    @timonohe

    Thanks for the reproduction @n9niwas. It made all the difference!

    I have found the problem. It is a bug in ngcc.

    During processing ngcc is spotting that the operating system is case-insensitive and then adding imports to files with canonical paths. E.g.

    import { Apollo } from './Apollo';
    import { SelectPipe } from './SelectPipe';
    import * as ɵngcc0 from '@angular/core';
    import * as ɵngcc1 from './selectpipe';
    export declare const PROVIDERS: (typeof Apollo)[];
    export declare const DECLARATIONS: (typeof SelectPipe)[];
    export declare class ApolloModule {
        static ɵmod: ɵngcc0.ɵɵNgModuleDefWithMeta<ApolloModule, [typeof ɵngcc1.SelectPipe], never, [typeof ɵngcc1.SelectPipe]>;
        static ɵinj: ɵngcc0.ɵɵInjectorDef<ApolloModule>;
    }
    

    Note that there are two imports to the same file:

    import { SelectPipe } from './SelectPipe';
    import * as ɵngcc1 from './selectpipe';
    

    The first is from the original file. The second is added by ngcc.

    Working on a fix.

    Nice, thanks for the quick help!

  9. cedricduffournet commented on May 8, 2020

    @cedricduffournet

    Waiting for a fix or install previous angular version (previous than 9.1.5 in my case)

  10. petebacondarwin commented on May 8, 2020

    @petebacondarwin
    Contributor

    @XIAOtaoliu - for now roll-back your Angular versions to 9.1.4.
    You can do this by changing all the @angular/... framework packages in your package.json to 9.1.4.

    E.g.

      "dependencies": {
        "@angular/animations": "9.1.4",
        "@angular/cdk": "^9.2.2",
        "@angular/common": "9.1.4",
        "@angular/compiler": "9.1.4",
        "@angular/core": "9.1.4",
        "@angular/elements": "9.1.4",
        "@angular/forms": "9.1.4",
        "@angular/material": "^9.2.2",
        "@angular/platform-browser": "9.1.4",
        "@angular/platform-browser-dynamic": "9.1.4",
        "@angular/router": "9.1.4",
        "@angular/service-worker": "9.1.4",
        ...
      },
      "devDependencies": {
        "@angular-devkit/build-angular": "0.901.4",
        "@angular/cli": "9.1.4",
        "@angular/compiler-cli": "9.1.4",
        "@angular/language-service": "9.1.4",
        ...
    

    And then re-installing your dependencies (i.e. yarn or npm install).

  11. tnlthanzeel commented on May 8, 2020

    @tnlthanzeel

    @XIAOtaoliu - for now roll-back your Angular versions to 9.1.4.
    You can do this by changing all the @angular/... framework packages in your package.json to 9.1.4.

    E.g.

      "dependencies": {
        "@angular/animations": "9.1.4",
        "@angular/cdk": "^9.2.2",
        "@angular/common": "9.1.4",
        "@angular/compiler": "9.1.4",
        "@angular/core": "9.1.4",
        "@angular/elements": "9.1.4",
        "@angular/forms": "9.1.4",
        "@angular/material": "^9.2.2",
        "@angular/platform-browser": "9.1.4",
        "@angular/platform-browser-dynamic": "9.1.4",
        "@angular/router": "9.1.4",
        "@angular/service-worker": "9.1.4",
        ...
      },
      "devDependencies": {
        "@angular-devkit/build-angular": "0.901.4",
        "@angular/cli": "9.1.4",
        "@angular/compiler-cli": "9.1.4",
        "@angular/language-service": "9.1.4",
        ...
    

    And then re-installing your dependencies (i.e. yarn or npm install).

    this is a temporary fix ryt?

  12. NamrataDG commented on May 8, 2020

    @NamrataDG

    My Angular versions are already pointing to 9.1.4.But its still failing.
    "dependencies": {
    "@angular/animations": "~9.1.4",
    "@angular/common": "~9.1.4",
    "@angular/compiler": "~9.1.4",
    "@angular/core": "~9.1.4",
    "@angular/forms": "~9.1.4",
    "@angular/platform-browser": "~9.1.4",
    "@angular/platform-browser-dynamic": "~9.1.4",
    "@angular/router": "~9.1.4",
    "rxjs": "~6.5.4",
    "tslib": "^1.10.0",
    "zone.js": "~0.10.2"
    },
    "devDependencies": {
    "@angular-devkit/build-angular": "~0.901.4",
    "@angular/cli": "~9.1.4",
    "@angular/compiler-cli": "~9.1.4",
    "@angular/language-service": "~9.1.4",
    "@types/jasmine": "~3.5.0",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^12.11.1",
    "codelyzer": "^5.1.2",
    "jasmine-core": "~3.5.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~5.0.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~2.1.0",
    "karma-jasmine": "~3.0.1",
    "karma-jasmine-html-reporter": "^1.4.2",
    "protractor": "~5.4.3",
    "ts-node": "~8.3.0",
    "tslint": "~6.1.0",

  13. 34 remaining items

  14. added this to the needsTriage milestone on May 8, 2020
  15. petebacondarwin commented on May 8, 2020

    @petebacondarwin
    Contributor

    We have just released 9.1.6 which should not have this problem. Please test.

  16. unpinned this issue on May 8, 2020
  17. christopherthielen commented on May 8, 2020

    @christopherthielen

    9.1.6 works for me, thanks for the quick turnaround!

  18. cedricduffournet commented on May 8, 2020

    @cedricduffournet

    9.1.6 works for me also, thanks

  19. mgechev commented on May 8, 2020

    @mgechev
    Member

    As @petebacondarwin mentioned, upgrading to 9.1.6 should fix the problem. Closing the issue now. In case the problem is still not resolved, feel free to open a new one.

  20. johndobrien commented on May 14, 2020

    @johndobrien

    This is back after upgrading to 9.1.7

  21. petebacondarwin commented on May 14, 2020

    @petebacondarwin
    Contributor

    Can you provide more details in a fresh issue please @webm0nk3y

  22. added a commit that references this issue on May 15, 2020
    3a49f9c
  23. added a commit that references this issue on May 18, 2020
    3dfc770
  24. angular-automatic-lock-bot commented on Jun 14, 2020

    @angular-automatic-lock-bot

    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.

  25. locked and limited conversation to collaborators on Jun 14, 2020
  26. added a commit that references this issue on Sep 5, 2020
    86455c4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: compilerIssues related to `ngc`, Angular's template compilerregressionIndicates than the issue relates to something that worked in a previous versiontype: bug/fix

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions