Неперехваченная ошибка NetworkError: не удалось выполнить ‘importScripts’ в ‘WorkerGlobalScope’

#javascript #web-worker

#javascript #веб-работник

Вопрос:

Я пытаюсь импортировать данные json с помощью web worker importScripts , возникает следующая ошибка.

Неперехваченная ошибка NetworkError: не удалось выполнить ‘importScripts’ в ‘WorkerGlobalScope’: не удалось загрузить скрипт по адресу (my: URL для получения данных с сервера).

Код веб-рабочего находится здесь. Я могу отправлять основные сообщения из моего потока web worker и основного потока js. Я хочу получить данные jsonp со своего сервера из потока web worker, а затем ответить на основной поток js.

 /*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=processInfoamp;type=(typeOfArgument)amp;userId=" userid;
    
               
               
               importScripts(url);
            self.postMessage("After import script");

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

Комментарии:

1. Знаете ли вы, что происходит с этой ошибкой?

Ответ №1:

В моем случае я импортировал PouchDB следующим образом: importScripts("//cdn.jsdelivr.net/pouchdb/5.3.1/pouchdb.min.js");

URL-адрес должен начинаться с правильного http / https. Таким образом, изменение на это решило проблему: importScripts("https://cdn.jsdelivr.net/pouchdb/5.3.1/pouchdb.min.js");

Ответ №2:

Функция importScript() должна быть размещена вне функции. В вашем случае вы должны использовать fetch(url). Вы также должны добавить асинхронность к каждой функции и использовать ее таким образом:

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