Uncaught NetworkError: Failed to execute 'importScripts' on 'WorkerGlobalScope'

user3462649 picture user3462649 · Jun 22, 2014 · Viewed 18.3k times · Source

I am trying to import json data from web worker using importSctipts, the following error occurs.

Uncaught NetworkError: Failed to execute 'importScripts' on 'WorkerGlobalScope': The script at (my:URL to fetch data from server) failed to load.

Web worker code is here. I am able to send basic messages from my web worker thread and main js thread. I want to fetch jsonp data from my server from web worker thread and then reply to main js thread.

/*web worker js file to fetch json data from server and then return to main javascript thread*/

self.onmessage = function(e)
{
    var curr = setInterval(function()
    {

         var message = e.data;     
            fetchMyTournament(message);

    }, 10000);
}



function fetchMyTournament(userid)
{
    self.postMessage('worker saying hi');


    var url = "(server URL mapping)?callback=processInfo&type=(typeOfArgument)&userId="+userid;



               importScripts(url);
            self.postMessage("After import script");



}
function processInfo(objJSON) 
{

    self.postMessage("Data returned from the server...: " 
                  + JSON.stringify(objJSON));
} 

Answer

mazout picture mazout · Jan 6, 2019

importScript() must be placed outside of a function. For your case you should use fetch(url). You should also add async to each function, and use it this way:

let message = fetchMyTournament(message).then(function(result){return result;});