Dr_Elvis
@Dr_Elvis
В гугле забанен

Как исправить ошибку «io is not defined» при внедрении кода?

Есть приложение для хрома. В нем я добавляю на страницу возможность передавать данные ко мне на сервер с помощью socket.io
На стороне клиента делаю следующее:
Внедряю библиотеку в head
let sioscript = document.createElement('script');
sioscript.setAttribute('src', 'https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js');
let hh = document.querySelector('head');
hh.appendChild(sioscript);

Далее внедряю функцию коннекта и запускаю её со страницы
function wsoc(){
    socket = io.connect('http://blablabla.ru/', {path: '/ws/'});
}
let InjectFunction = function(PageScriptSpace, func) {
    PageScriptSpace.innerHTML += func;
}
let RunFunction = function (PageScriptSpace, func_name){
    PageScriptSpace.innerHTML += func_name+'();'
}
PageScriptSpace = document.createElement('script');
InjectFunction(PageScriptSpace, wsoc);
RunFunction(PageScriptSpace, 'wsoc');
h = document.querySelector('head');
h.appendChild(PageScriptSpace);

Но при загрузки страницы пишет ошибку "io is not defined".
далее если я в консоли пропишу wsoc() - то всё сработает.
Почему данная ошибка выскакивает, если я изначально добавляю саму библиотеку? Причем ставил брейкпоинт на строке запуска коннекта и смотрел на страницe наличие библиотеки и она уже там была.
  • Вопрос задан
  • 482 просмотра
Решения вопроса 1
SagePtr
@SagePtr
Еда - это святое
После того, как внедряете тэг script в head, вы ждёте, когда он загрузится? Или сразу пытаетесь работать с переменной, которая в нём определена?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
duboloms
@duboloms
Люблю есть дубы с кетчупом. Веб-разработчик.
Так создай переменную io и присвой ей require или Import
const io = require("socket.io");
// или
const io = import io from socket.io;

Или как у вас там называется функция socket'a
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы