We am loading a script dynamically using the following code:
var script = document.createElement('script');
script.type = 'text/javascript'
script.onload = () => {
console.log("script", window.myScript);
};
script.onerror = console.log;
script.src = 'https://example.com/my_script.js';
document.head.appendChild(script);
the script contains code like:
window.myScript = function(){
// lots of code
return 'library';
}();
Most of the time this works as expected and window.myScript exists when the script.onload is triggered. However in some rare occasions script.onload is triggered, but window.myScript is undefined;
I was able to reproduce a similar case by changing the script to:
window.myScript = function(){
throw 'error';
return 'library';
}();
However in this case there should be an additional error which we are not seeing in our logs (we log all errors using window.onerror);
Are there any other reasons why this can happen? We have seen this happen on Chrome 86 and Edge 86.