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

Strange bug with Microsoft Edge #227

Closed
patroza opened this issue Oct 22, 2015 · 116 comments
Closed

Strange bug with Microsoft Edge #227

patroza opened this issue Oct 22, 2015 · 116 comments
Assignees

Comments

@patroza
Copy link

patroza commented Oct 22, 2015

Im encountering something really strange.
My site only loads in Microsoft Edge when Developer Tools (F12) are open.
Namely, if the debugger is connected, it seems to work, if I disconnect the debugger even with the dev tools open, the site stops loading.

I've narrowed it down so far to the loading of templates. I have several globalResources (and plugins) some of which are custom elements.
When I limit the amount of loading these, then my app template and beyond seems to load.
If I load all of them, the loading stops either at one of the resources, or just the app template, or then the first routed view and so on.

I am trying to create a repro out of this, but so far im very confused..

@EisenbergEffect
Copy link
Contributor

There's a bug in system.js in FF and Edge we believe which causes the browser to fail after a certain number of script loads. The System.js team is working to resolve this. To confirm, can you try bundling your app and seeing if it works fine when bundled?

@patroza
Copy link
Author

patroza commented Oct 22, 2015

@EisenbergEffect thanks for reply. So far even when bundled we run into the issue sadly :(
(Bundling issues were fixed for Edge/IE (i think) in a recent release, but this seems different)

@atsu85
Copy link
Contributor

atsu85 commented Oct 23, 2015

I guess @EisenbergEffect talked about systemjs/systemjs#814 but i'm not 100% sure about it. @Sickboy could You take a look at it and report back, what do You think about the relation of these issues?

@EisenbergEffect EisenbergEffect self-assigned this Oct 24, 2015
@EisenbergEffect
Copy link
Contributor

I'm closing this since it looks like it was resolved in system.js

@SamDeBlock
Copy link

@EisenbergEffect
I'm having the same problem now on http://aurelia.io/docs.html
The site only loads in Edge with dev tools open.

@dpinart
Copy link

dpinart commented Nov 25, 2015

@SamDeBlock I'm facing same issue. It's weird but sometimes aurelia apps require edge having dev tools open

@arjendeblok
Copy link

I am facing the same issue. My site takes about 8 seconds to load on Edge.
But.. on IE11 it takes less than a second to load.
Very strange. Looks like a SystemJS issue to me.

@EisenbergEffect
Copy link
Contributor

Did you add bluebird? That should solve the problem. We have reported this issue to the Edge team along with tests to verify it for them.

@arjendeblok
Copy link

If I add bluebird (not via JSPM, but in the header on index.html) the Edge browser now takes 2 seconds.
IE11 (with or without bluebird) still takes less than a second, so IE11 is still more then 2 times faster.
Thanks for the tip!

@SorenMuller
Copy link

I added bluebird script in index.html, but still the same..
Aurelia stop at splash screen on Edge...
Do I need to do more ??

btw: same issue with "http://aurelia.io/docs.html#/aurelia/framework/latest/doc/article/what-is-aurelia"

@DavidRogers
Copy link

Anyone find a fix for this? I am having the same issue...

@EisenbergEffect
Copy link
Contributor

@jdanyow Any progress on this? I'd put this as our absolute highest priority bug right now...

@jdanyow
Copy link
Contributor

jdanyow commented Feb 13, 2016

I can't reproduce it. Bluebird fixed my edge issues. No one is seeing it in the docs app anymore either (that I've heard).

@EisenbergEffect
Copy link
Contributor

If that's true then I can now sleep again at night :) Thanks @jdanyow!

@gheoan
Copy link
Contributor

gheoan commented Feb 13, 2016

Just tested the docs app in Edge. Sometimes it loads, sometimes it doesn't.

@jdanyow
Copy link
Contributor

jdanyow commented Feb 13, 2016

@gheoan few questions for you- I'm hoping to find a way to reproduce this:

  1. what url/route in the docs app?
  2. what version of Edge? Here's what I have:
    edge
  3. if you clear your cache (ctrl+shift+delete and check the second and third boxes) does it reproduce?

@gheoan
Copy link
Contributor

gheoan commented Feb 13, 2016

  1. http://aurelia.io/docs.html which redirects to http://aurelia.io/docs.html#/aurelia/framework/latest/doc/article/what-is-aurelia
  2. untitled
  3. It seems to almost always reproduce when clearing cache.

@DavidRogers
Copy link

I am seeing the same inconsistent results with the docs as Gheoan and I am running the same version of Edge. On my own site though it seems to never work no matter what I do. However it works great as soon as I open my dev tools and refresh the page...

@JayLance
Copy link

Seeing the same results here also. With dev tools open it's fine, with dev tools closed it mostly fails.

@obany
Copy link

obany commented Feb 22, 2016

I can confirm I am seeing the same issue with the aurelia docs site, and also our own apps on Edge.

Since the problem always disapears when the dev tools are open it is very tricky to debug, however I have managed to trace the following.

The issue appears to be triggered by a call to the template-registry-entry plugin failing. I augmented the system.src.js with the following:

hook('instantiate', function(instantiate) {
    return function(load) {
      var loader = this;

      if (load.metadata.loaderModule && load.metadata.loaderModule.instantiate && !loader.builder && load.metadata.format != 'defined') {
        window.debug("isModule: " + (load.metadata.loaderModule === System._loader.modules["template-registry-entry"].module));

        window.debug("metadata result 1: " + JSON.stringify(load.metadata.result));
        var inResult = load.metadata.loaderModule.instantiate.call(loader, load);
        var inResult2 = System._loader.modules["template-registry-entry"].module.instantiate.call(loader, load);
        window.debug("metadata result 2: " + JSON.stringify(load.metadata.result));

        window.debug("inResult: " + JSON.stringify(inResult));
        window.debug("inResult2: " + JSON.stringify(inResult2));

        return Promise.resolve(inResult).then(function (result) {
          load.metadata.entry = createEntry();
          load.metadata.entry.execute = function () {
            return result;
          }
          load.metadata.entry.deps = load.metadata.deps;
          load.metadata.format = 'defined';
          return instantiate.call(loader, load);
        });
      }
      else
        return instantiate.call(loader, load);
    };
  });

and the results are as follows:

isModule: true
metadata result 1: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/navBarMenu.html","onReady":null,"_template":{},"_factory":null}
metadata result 2: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/navBarMenu.html","onReady":null,"_template":{},"_factory":null}
inResult: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/navBarMenu.html","onReady":null,"_template":{},"_factory":null}
inResult2: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/navBarMenu.html","onReady":null,"_template":{},"_factory":null}
isModule: true
metadata result 1: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/helpTip.html","onReady":null,"_template":{},"_factory":null}
metadata result 2: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/helpTip.html","onReady":null,"_template":{},"_factory":null}
inResult: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/helpTip.html","onReady":null,"_template":{},"_factory":null}
inResult2: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/helpTip.html","onReady":null,"_template":{},"_factory":null}
isModule: true
metadata result 1: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/logConsole.html","onReady":null,"_template":{},"_factory":null}
metadata result 2: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/logConsole.html","onReady":null,"_template":{},"_factory":null}
inResult: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/logConsole.html","onReady":null,"_template":{},"_factory":null}
inResult2: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/common/ui/elements/logConsole.html","onReady":null,"_template":{},"_factory":null}
isModule: true
metadata result 1: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/app.html","onReady":null,"_template":{},"_factory":null}
metadata result 2: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/app.html","onReady":null,"_template":{},"_factory":null}
inResult: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/app.html","onReady":null,"_template":{},"_factory":null}
inResult2: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/app.html","onReady":null,"_template":{},"_factory":null}
isModule: true
metadata result 1: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/ventilationCalculator/home.html","onReady":null,"_template":{},"_factory":null}
metadata result 2: {"templateIsLoaded":true,"factoryIsReady":false,"resources":null,"dependencies":[],"address":"http://localhost/myapp/app/ventilationCalculator/home.html","onReady":null,"_template":{},"_factory":null}
inResult: undefined
inResult2: undefined


as you can see the plugin behaves correctly for the first 4 calls, but the 5th module fails. The metatadata.result is definitely correct but the "template-registry-entry" appears to be corrupt so the call to instantiate doesn't return a value.

@EisenbergEffect
Copy link
Contributor

@jdanyow A clue! ^^^ Do you have time to look into it?

@jdanyow
Copy link
Contributor

jdanyow commented Feb 22, 2016

@obany awesome 💯- thanks for sharing! will dig into this some more

@obany
Copy link

obany commented Mar 1, 2016

This is now the only defect left on our projects and as such has become a very high priority and blocker to release.

Since the last debug session our code and libraries all over the projects have updated and now the issue exhibits in a different location albeit in a very similar fashion.

Bear in mind that this only happens on Edge without the DevTools open, as soon as they are open it works every time.

The following steps can consistently reproduce the issue in our apps.

In system.src.js the hook('fetch') method is modified as follows to add the window.debug message

hook('fetch', function(fetch) { return function(load) { var loader = this; if (load.metadata.loaderModule && load.metadata.loaderModule.fetch && load.metadata.format != 'defined') { load.metadata.scriptLoad = false; window.debug("systemjs fetch " + load.address + " = " + load.metadata.loaderModule.fetch); return load.metadata.loaderModule.fetch.call(loader, load, function(load) { return fetch.call(loader, load); }); } else { return fetch.call(loader, load); } }; });

So this is simply capturing the content of the fetch method in the 'template-registry-entry' plugin, the next line actually makes the call. Inside the plugin fetch method I have the following:

DefaultLoader.prototype.addPlugin = function (pluginName, implementation) { System.set(pluginName, System.newModule({ 'fetch': function fetch(load, _fetch) { window.debug("DefaultLoader fetch: " + JSON.stringify(load.address)); var result = implementation.fetch(load.address); return Promise.resolve(result).then(function (x) { load.metadata.result = x; return ''; }); }, 'instantiate': function instantiate(load) { return load.metadata.result; } })); };

Which will simply display the address to be loaded.

A working trace of this show the following

`systemjs fetch http://localhost/myapp/app/common/ui/elements/navBarMenu.html = function fetch(load, _fetch) {
window.debug("DefaultLoader fetch: " + JSON.stringify(load.address));
var result = implementation.fetch(load.address);
return Promise.resolve(result).then(function (x) {
load.metadata.result = x;
return '';
});
}
DefaultLoader fetch: "http://localhost/myapp/app/common/ui/elements/navBarMenu.html"

systemjs fetch http://localhost/myapp/app/common/ui/elements/helpTip.html = function fetch(load, _fetch) {
window.debug("DefaultLoader fetch: " + JSON.stringify(load.address));
var result = implementation.fetch(load.address);
return Promise.resolve(result).then(function (x) {
load.metadata.result = x;
return '';
});
}
DefaultLoader fetch: "http://localhost/myapp/app/common/ui/elements/helpTip.html"

systemjs fetch http://localhost/myapp/app/common/ui/elements/buttonList.html = function fetch(load, _fetch) {
window.debug("DefaultLoader fetch: " + JSON.stringify(load.address));
var result = implementation.fetch(load.address);
return Promise.resolve(result).then(function (x) {
load.metadata.result = x;
return '';
});
}
DefaultLoader fetch: "http://localhost/myapp/app/common/ui/elements/buttonList.html"

systemjs fetch http://localhost/myapp/app/app.html = function fetch(load, _fetch) {
window.debug("DefaultLoader fetch: " + JSON.stringify(load.address));
var result = implementation.fetch(load.address);
return Promise.resolve(result).then(function (x) {
load.metadata.result = x;
return '';
});
}
DefaultLoader fetch: "http://localhost/myapp/app/app.html"

systemjs fetch http://localhost/myapp/app/home/home.html = function fetch(load, _fetch) {
window.debug("DefaultLoader fetch: " + JSON.stringify(load.address));
var result = implementation.fetch(load.address);
return Promise.resolve(result).then(function (x) {
load.metadata.result = x;
return '';
});
}
DefaultLoader fetch: "http://localhost/myapp/app/home/home.html"
`

As you can see we get the dump of the method and then the message from inside the method.

Now a failed log with the DevTools closed.

`systemjs fetch http://localhost/myapp/app/common/ui/elements/navBarMenu.html = function fetch(load, _fetch) {
window.debug("DefaultLoader fetch: " + JSON.stringify(load.address));
var result = implementation.fetch(load.address);
return Promise.resolve(result).then(function (x) {
load.metadata.result = x;
return '';
});
}
DefaultLoader fetch: "http://localhost/myapp/app/common/ui/elements/navBarMenu.html"

systemjs fetch http://localhost/myapp/app/common/ui/elements/helpTip.html = function fetch(load, _fetch) {
window.debug("DefaultLoader fetch: " + JSON.stringify(load.address));
var result = implementation.fetch(load.address);
return Promise.resolve(result).then(function (x) {
load.metadata.result = x;
return '';
});
}
DefaultLoader fetch: "http://localhost/myapp/app/common/ui/elements/helpTip.html"

systemjs fetch http://localhost/myapp/app/common/ui/elements/buttonList.html = function fetch(load, _fetch) {
window.debug("DefaultLoader fetch: " + JSON.stringify(load.address));
var result = implementation.fetch(load.address);
return Promise.resolve(result).then(function (x) {
load.metadata.result = x;
return '';
});
}
DefaultLoader fetch: "http://localhost/myapp/app/common/ui/elements/buttonList.html"

systemjs fetch http://localhost/myapp/app/app.html = function fetch(load, _fetch) {
window.debug("DefaultLoader fetch: " + JSON.stringify(load.address));
var result = implementation.fetch(load.address);
return Promise.resolve(result).then(function (x) {
load.metadata.result = x;
return '';
});
}
`

As you can see the systemjs message shows that it is about to call the correct method, but it never reaches the code inside that method!

I have tried bundling the app and while this improves the situation it still fails maybe 1 out of every 4 loads. In addition I have tried the system.js polyfills, bluebird and no polyfills (very slow) for Promises, but this has had no impact on the results.

I am at a bit of a loss to try and understand why this is happening, maybe the plugin has been garbage collected? Any more suggestions to try ?

@EisenbergEffect
Copy link
Contributor

@jdanyow This is really the most important thing to work on now. @obany has provided us some good information. Let's see if we can squash this bug fast. If it's an issue in system.js, then let's submit a PR to them to fix it as well.

@obany
Copy link

obany commented Mar 1, 2016

I have now created a minimal example based on the skel app which demonstrates the issue.

https://github.com/obany/skeleton-navigation

Just build and fire up in edge browser and it shows a blank screen, open devtools, refresh and it displays the app.html.

The main changes to reproduce the failure are load some global resources and disable development logging, console.log has the same effect as opening the devtools and makes it work.

@EisenbergEffect
Copy link
Contributor

@obany As a temporary hack...could you add a console.log statement to your main.js file to ensure that your app always loads?

@AStoker
Copy link
Contributor

AStoker commented Jul 13, 2016

That's why I think the Hub still works on Edge, because it's using RequireJS. The aurelia-loader-default has different logic to load modules depending on whether or not SystemJS is available. And there is a difference (the instantiate method) between the way the two branches load files and add plugins:

//sans System
DefaultLoader.prototype.addPlugin = function (pluginName, implementation) {
      var nonAnonDefine = define;
      nonAnonDefine(pluginName, [], {
        'load': function load(name, req, onload) {
          var result = implementation.fetch(name);
          Promise.resolve(result).then(onload);
        }
      });
    };
//With System
DefaultLoader.prototype.addPlugin = function (pluginName, implementation) {
      System.set(pluginName, System.newModule({
        'fetch': function fetch(load, _fetch) {
          var result = implementation.fetch(load.address);
          return Promise.resolve(result).then(function (x) {
            load.metadata.result = x;
            return '';
          });
        },
        'instantiate': function instantiate(load) {
          return load.metadata.result;
        }
      }));
    };

Now, I could be interpreting the logic incorrectly, I'll leave that as a definite possibility :)

@SorenMuller
Copy link

SorenMuller commented Jul 13, 2016

We have both a site with system.js and one created with Aurelia-cli using Require.js
Using Require.js eliminates the bug i Edge...
But using using system.js, I struggled a lot with Edge, but I think it has something with timeout for loading scripts..
After bundling/minifying the app, the Edge bug has disapeared and loading time was ofcause shorter :-)..
Just my input ;-)

@AStoker
Copy link
Contributor

AStoker commented Jul 14, 2016

Yah, unfortunately bundling didn't work for us. :(

@patroza
Copy link
Author

patroza commented Jul 14, 2016

We moved to Webpack quite a while ago and things are quite awesome since then.. (just did the switch ti 2.0 and easywebpack)
SystemJS/jspm was nice though... We'll be evalling CLI/RJS too at some point I guess :)

@codermrrob
Copy link

Just to say we are also encountering this issue with or without bundling.
It is also reproduced on the Aurelia Kendo-UI Components Catalog (http://aurelia-ui-toolkits.github.io/demo-kendo/#/about/about).

Seems like the best solution is to move to webpack....

@powerbuoy
Copy link

Having the same issue here. Bundled app won't load in Edge unless dev tools are open. Using SystemJS v0.19.36 and Bluebird 3.4.1. Might bite the bullet and switch to Webpack but the whole bundling process is a bit of a mystery for me right now so I'm dreading it :P

@dpinart
Copy link

dpinart commented Aug 8, 2016

@powerbuoy It's working fine for me with same settings than yours. Since a week ago edge works signficatively faster and I can even run the app even without bundling

@powerbuoy
Copy link

@dpinart That's odd. Definitely does not work for me. Without Bluebird the app takes ages to load as well.

@dpinart
Copy link

dpinart commented Aug 8, 2016

I switched to Webpack 1.0 a few months ago but I got back to jspm. Webpacks 1.0 bundling is really tedious and I'm not able to configure several bundles in order to lazy load parts of my app, in addition, with systemjs I can configure system mappings at runtime,...

As an advise, be sure your index.html files looks like the skeleton one

In addition, look at chrome adn edge consoles to ensure you don't have unexpected exceptions. Some times exceptions do not appear in chrome but the do in edge and avoid to complete the app launch

@powerbuoy
Copy link

I do get Failed to parse SourceMap: http://.../dist/app.css.map and Failed to parse SourceMap: http://.../jspm_packages/system.js.map. I'm not sure how to remove sourcemaps when bundling (I haven't really touched the build/ folder at all, but I'd prefer if they weren't even included in export/.

@dkent600
Copy link

dkent600 commented Aug 8, 2016

Edge works for me with bundling and system.js (javascript is ES5 with es6-shim and bluebird).

@notanewbie
Copy link

notanewbie commented Aug 23, 2016

I have an HTML5 file that it supposed to load a .js library I made but it won't load in MS Edge, saying that the function is undefined. (BTW the HTML file in video3.html from my repo LIPTV [https://github.com/notanewbie/LIPTV] and the library is from my repo getCookie [https://github.com/notanewbie/getCookie])

@DerAlbertCom
Copy link

DerAlbertCom commented Sep 9, 2016

Hey, loading with Edge seems to works .... if you don't use .globalResources() or .feature(). But this does not help us ;(

@codermrrob
Copy link

so far Edge has been working for us using aurelia-cli
still doing our spikes with aurelia-cli but so far, so good.

@AStoker
Copy link
Contributor

AStoker commented Sep 9, 2016

@codermrrob Aurelia CLI uses RequireJS which doesn't have the issue with Edge. The Edge issue is due to a problem in SystemJS it seems.

@DerAlbertCom
Copy link

yes, the combinaton of Aurela, SystemJs and Edge does not work well together.

@dpinart
Copy link

dpinart commented Sep 10, 2016

I disagree. Right now, I have sevearal apps with Aurelia + jspm + SystemsJs that work fine in edge. I'm facing some issues with both edge and safari related with polymer, not with aurèlia or jspm.

I can agree that probably app startup is better with requireJS than with SystemJS, but right now there's no a clear difference

@dkent600
Copy link

The combo works for me as long as I also use bluebird. Note I also have ES5 javascript with es6-shim.

@AStoker
Copy link
Contributor

AStoker commented Sep 10, 2016

The problem with Edge and SystemJS seemed contained to something with loading up plugins. If you have a setup that is working consistently @dpinart, I would love to have the chance to take a look at your setup in an attempt to figure out why other people have problems with SystemJS still :)

@Thanood
Copy link

Thanood commented Sep 11, 2016

@AStoker I'm also very interested in an answer to that question. 😃
I also have a setup that's been working consistenly for months (January until today). Maybe you'd like to have a look.

Here it is:
http://aurelia-ui-toolkits.github.io/demo-materialize/

Source: https://github.com/aurelia-ui-toolkits/demo-materialize
Source of the plugin used: https://github.com/aurelia-ui-toolkits/aurelia-materialize-bridge

@SamDeBlock
Copy link

SamDeBlock commented Sep 12, 2016

After a long afternoon of debugging, we came up with a very strange fix.
Putting this in our head tag, resolves all our issues with loading in edge.
<script> Function.prototype.call = function(t) { return this.apply(t, Array.prototype.slice.apply(arguments, [1])); } </script>
Some things we found out:

  • Reducing the number of globalresources seemed to make the issue go away, but this wasn't a feasible solution.
  • Adding a .catch to the last promise in aurelia-framework setRoot function, gave us a pointer to where the actual exception occured. (In our case: object doesn't support property or method 'match'
    This seemed to originate from (and only occurred when loading html resources) systemjs/plugins.js where the return of that fetch.call was a function rather than a string. To be clear, the function returned was this fetch function instead of the empty string you would expect.

I think this all traces back to this bug in edge chakra-core/ChakraCore#1415

edit:

  • Our app now works in Edge with or without bluebird.
  • Edge versions:
    Microsoft Edge 38.14393.0.0
    Microsoft EdgeHTML 14.14393

@DerAlbertCom
Copy link

DerAlbertCom commented Sep 12, 2016

after gaving up on that issue, trying moving to aurelia-cli (which has other problems, and does not worked out yet). i gave this a shoot. first check, the App in Up and Running in Edge. Thank you. But we have not tested any further. but seeing the app starting in Edge is promising.

@AStoker
Copy link
Contributor

AStoker commented Sep 12, 2016

Wish I had that a few weeks ago! :D
Our office moved to the Aurelia CLI, and although it's promising, it's not quite at the same place that we had SystemJS (I'm working on getting a few of those features implemented). Glad to hear that there was some fix, and at least a source to the problem was found (theoretically).

@peterpde
Copy link

peterpde commented Nov 3, 2016

@SamDeBlock Amazing. Your fix worked like a charm. I have been struggling with this issue for quite a while. Just wanted to say thank you.

@don-bluelinegrid
Copy link

I am seeing something that sounds similar to this, but in IE 11. Our app hangs on the initial app loading splash screen. We are using latest Aurelia framework, and Typescript + Webpack.

In IE 11 the app hangs at the splash screen, but works fine on all other platforms. I see these errors in the IE 11 console:

DOM7011: The code on this page disabled back and forward caching. For more information, see: http://go.microsoft.com/fwlink/?LinkID=291337
127.0.0.1:9000
HTML1300: Navigation occurred.
127.0.0.1:9000
SCRIPT1002: Syntax error
app.bundle.js (71464,1)

Error: Loading chunk 0 failed.
   {
      [functions]: ,
      __proto__: {
         [functions]: ,
         __proto__: { },
         __�symbol:hasInstance0.58877379413517476: undefined,
         __�symbol:isConcatSpreadable0.58877379413517477: undefined,
         __�symbol:iterator0.58877379413517471: undefined,
         __�symbol:match0.58877379413517472: undefined,
         __�symbol:replace0.58877379413517473: undefined,
         __�symbol:search0.58877379413517474: undefined,
         __�symbol:species0.58877379413517479: undefined,
         __�symbol:split0.58877379413517475: undefined,
         __�symbol:toPrimitive0.588773794135174710: undefined,
         __�symbol:toStringTag0.588773794135174711: undefined,
         __�symbol:unscopables0.58877379413517478: undefined,
         message: "",
         name: "Error"
      },
      __stackCleaned__: true,
      __�symbol:hasInstance0.58877379413517476: undefined,
      __�symbol:isConcatSpreadable0.58877379413517477: undefined,
      __�symbol:iterator0.58877379413517471: undefined,
      __�symbol:match0.58877379413517472: undefined,
      __�symbol:replace0.58877379413517473: undefined,
      __�symbol:search0.58877379413517474: undefined,
      __�symbol:species0.58877379413517479: undefined,
      __�symbol:split0.58877379413517475: undefined,
      __�symbol:toPrimitive0.588773794135174710: undefined,
      __�symbol:toStringTag0.588773794135174711: undefined,
      __�symbol:unscopables0.58877379413517478: undefined,
      description: "Loading chunk 0 failed.",
      message: "Loading chunk 0 failed.",
      name: "Error",
      stack: "Error: Loading chunk 0 failed.
    (No stack trace)
From previous event:
   at requireEnsure (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:97:12)
   at Anonymous function (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15794:9)
From previous event:
   at _import (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15780:5)
   at loadModule (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15838:5)
   at config (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15604:5)
   at handleApp (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15595:3)
   at Anonymous function (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15623:9)
From previous event:
   at Anonymous function (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15620:5)
From previous event:
   at run (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15617:3)
   at Anonymous function (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15642:1)
   at aurelia-bootstrapper-webpack (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15542:29)
   a"
   }

Unhandled rejection Error: Loading chunk 0 failed.
    (No stack trace)
From previous event:
   at requireEnsure (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:97:12)
   at Anonymous function (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15794:9)
From previous event:
   at _import (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15780:5)
   at loadModule (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15838:5)
   at config (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15604:5)
   at handleApp (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15595:3)
   at Anonymous function (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15623:9)
From previous event:
   at Anonymous function (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15620:5)
From previous event:
   at run (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15617:3)
   at Anonymous function (http://127.0.0.1:9000/aurelia-bootstrap.bundle.js:15642:1)
   at aurelia-bootstrapper-webpack (http://127.0.0.1:9000/aurelia-bootstrap.bund

@don-bluelinegrid
Copy link

don-bluelinegrid commented Dec 21, 2016

Also as FYI, I see some pretty significant errors in the JS console of IE 11 for the aurelia.io docs page, and the left-hand navigation does not render as a result:

screen shot 2016-12-21 at 10 04 27 am

@sberney
Copy link

sberney commented Apr 25, 2017

I am developing a large platform which uses SystemJS (the latest version), and we are experiencing this same issue, no Aurelia involved. The plugin in question is mine -- all code involved is mine (except SystemJS), code which I am confident in.

I tracked it down independently to Chakra and a plugin for fetch at the line which expects the result of fetch to be a string, not a function, exactly as mentioned above. This is a crazy bug.

I highly suspect all the "resolutions" above are patternicity, as this occurs for me in a highly random manner. Sometimes it seems like it is working, other times like it is failing all the time -- it changes from time to time, and I make changes from time to time trying to debug the problem. While it may be possible to "work around" the issue by using software which doesn't provoke the behavior, I suspect the fault is with Edge.

Thanks @SamDeBlock !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests