Skip to content
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

Angular v8 - import 'web-animations-js' polyfill breaks the app #14518

Closed
robisim74 opened this issue May 24, 2019 · 18 comments · Fixed by #14887
Closed

Angular v8 - import 'web-animations-js' polyfill breaks the app #14518

robisim74 opened this issue May 24, 2019 · 18 comments · Fixed by #14887

Comments

@robisim74
Copy link

🐞 Bug report

Command (mark with an x)

- [ ] new
- [x ] build
- [ ] serve
- [ ] test
- [ ] e2e
- [ ] generate
- [ ] add
- [ ] update
- [ ] lint
- [ ] xi18n
- [ ] run
- [ ] config
- [ ] help
- [ ] version
- [ ] doc

Is this a regression?

Yes, the previous version in which this bug was not present was Angular v7

Description

If I add import 'web-animations-js'; into polyfills.ts , in production it breaks the app.

🔬 Minimal Reproduction

  • Create new project using @angular/cli 8.0.0-rc.4
  • npm install --save web-animations-js
  • Enable import 'web-animations-js'; into polyfills.ts
  • ng build --prod
  • Run the app, for example using http-server

🔥 Exception or Error




Uncaught TypeError: Cannot set property 'true' of undefined
    at Object.6dTf (polyfills-es2015.c4346c40f18bcedaacdd.js:1)
    at i (runtime-es2015.38622beb49066db5cb2b.js:1)
    at Module.hN/g (polyfills-es2015.c4346c40f18bcedaacdd.js:1)
    at i (runtime-es2015.38622beb49066db5cb2b.js:1)
    at Object.1 (polyfills-es2015.c4346c40f18bcedaacdd.js:1)
    at i (runtime-es2015.38622beb49066db5cb2b.js:1)
    at t (runtime-es2015.38622beb49066db5cb2b.js:1)
    at Array.r [as push] (runtime-es2015.38622beb49066db5cb2b.js:1)
    at polyfills-es2015.c4346c40f18bcedaacdd.js:1
Uncaught Error: In this configuration Angular requires Zone.js
    at new Aa (main-es2015.578a9f97ccae57b370de.js:1)
    at Ya.bootstrapModuleFactory (main-es2015.578a9f97ccae57b370de.js:1)
    at Module.zUnb (main-es2015.578a9f97ccae57b370de.js:1)
    at i (runtime-es2015.38622beb49066db5cb2b.js:1)
    at Object.0 (main-es2015.578a9f97ccae57b370de.js:1)
    at i (runtime-es2015.38622beb49066db5cb2b.js:1)
    at t (runtime-es2015.38622beb49066db5cb2b.js:1)
    at Array.r [as push] (runtime-es2015.38622beb49066db5cb2b.js:1)
    at main-es2015.578a9f97ccae57b370de.js:1

🌍 Your Environment


Angular CLI: 8.0.0-rc.4
Node: 10.14.2
OS: win32 x64
Angular: 8.0.0-rc.4
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.800.0-rc.4
@angular-devkit/build-angular     0.800.0-rc.4
@angular-devkit/build-optimizer   0.800.0-rc.4
@angular-devkit/build-webpack     0.800.0-rc.4
@angular-devkit/core              8.0.0-rc.4
@angular-devkit/schematics        8.0.0-rc.4
@ngtools/webpack                  8.0.0-rc.4
@schematics/angular               8.0.0-rc.4
@schematics/update                0.800.0-rc.4
rxjs                              6.4.0
typescript                        3.4.5
webpack                           4.30.0

Anything else relevant?

If I import zone before web-animation-js, the app works, but the first error is still present.

@alan-agius4
Copy link
Collaborator

alan-agius4 commented May 27, 2019

@alan-agius4 alan-agius4 self-assigned this May 27, 2019
@filipesilva filipesilva pinned this issue May 27, 2019
@filipesilva filipesilva modified the milestones: Backlog, 8.0 May 28, 2019
alexeagle pushed a commit that referenced this issue May 28, 2019
… polyfill

Previous versions rely on `this` which breaks differential loading since it's `undefined` when using script tags with type module.

Fixes #14518
@bentzibentz
Copy link

Why is this issue closed? The error still exists in v8.0.0. If i import web-animations-js, the application breaks.

@alan-agius4
Copy link
Collaborator

Hi, for the time being kindly update the dependency version to github:angular/web-animations-js#release_pr208 as we are waiting for web-animations/web-animations-js#208 to be released.

That said, if you updated to Angular 8 via ng update the dependency change should have been done automatically. Otherwise, if it's a new application, I would ask if you really need to add the web-animations-js polyfill in the first place. This is typically needed only when using the AnimationBuilder API.

Re-opening until we get this solved.

@dirkluijk

This comment has been minimized.

@Senneseph
Copy link

I believe #208 has been merged / released.

@mleimer
Copy link

mleimer commented Jun 11, 2019

@Senneseph It is merged but not yet released. Latest version is still 2.3.1 from 2 years ago.

@mgechev
Copy link
Member

mgechev commented Jun 11, 2019

Just had a chat with the maintainers. They are working on a release in the next day or two.

@brookhutchinson
Copy link

Thank you for the update

danielwiehl added a commit to SchweizerischeBundesbahnen/scion-workbench that referenced this issue Jun 13, 2019
…he app

This commit addresses issue #152 not to break the app, and is a workaround until angular/angular-cli#14518 is fixed.
simoneggler pushed a commit to SchweizerischeBundesbahnen/scion-workbench that referenced this issue Jun 13, 2019
…he app

This commit addresses issue #152 not to break the app, and is a workaround until angular/angular-cli#14518 is fixed.
@macjohnny
Copy link

for those looking for a workaround to import libraries that are not fixed:
instead of doing import 'some-library' in main.ts or polyfills.ts, add the resulting path to the scripts section in your angular.json:

{
  "projects": {
    "my-project": {
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "scripts": [
              "node_modules/some-library/some-library.min.js"
            ]

this will be bundled in dist/scripts.js and in the dist/index.html you will have

<script src="scripts.js"></script>

without type="module"

@clydin
Copy link
Member

clydin commented Jun 14, 2019

It's also important to note that unless the application is actually using the AnimationBuilder class, the animations polyfill is not needed by Angular.

@bfaulk96
Copy link

Just had a chat with the maintainers. They are working on a release in the next day or two.

"working on a release", they said... "next day or two", they said..

@Ismaestro
Copy link

Thanks @alan-agius4 I didn't know I don't need to import web-animations, I just thought if I would like to support IE/Edge or Safari I had to import it... Now I can remove it from the project

@brookhutchinson
Copy link

This issue has been fixed in @angularcli@8.0.3

A heads up to anyone using igniteui-angular npm package... You will need to install [email protected] and [email protected] as npm runtime dependencies inside your Angular Project

@TharakaMadhusanka
Copy link

I also met this issue, so I did uninstall web-animations.js and rebuild and published. Thus this was sorted out. But I am not sure it's the exact solution for this, as web-animations.js is required for IE and Safari browsers, according to the google.

@clydin
Copy link
Member

clydin commented Jun 22, 2019

It’s generally the correct solution. The polyfill is only needed for those browsers if the “AnimationBuilder” class is used within the project. Typical animation use does not require it.

@alan-agius4
Copy link
Collaborator

web-animations-js published 2.3.2 which includes the fix

@viceice
Copy link

viceice commented Jun 25, 2019

The blocked label can be removed.

@alan-agius4 alan-agius4 unpinned this issue Jun 25, 2019
emoralesb05 pushed a commit to Teradata/vantage-ui-template that referenced this issue Jul 25, 2019
@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 9, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.