Что на самом деле происходит?
Следуя официальному примеру использования:
import io from 'socket.io-client';
в приложении JS приводит к неработающему сайту в IE 11.
Под словом «сломанный» я не имею в виду, что функциональность socket-io не работает, но то, что он нарушает загрузку всего пакета веб-приложения, включая отчеты об ошибках и т. Д. Поскольку никто не тестирует IE 11, вероятно, никто не заметил эту ошибку.
Просто добавьте import io from 'socket.io-client'
в веб-приложение и протестируйте его в IE 11.
Что ожидается?
IE 11 должен загрузить пакет
Причина, по которой это происходит, заключается в том, что значение «main» в package.json указывает разделенный исходный код, а не связанную папку dist, поэтому исходный код объединяется. Возможно, некоторые сборщики также обрабатывают импортированные модули, но моя версия Webpack этого не делает, она обрабатывает только исходный код пользователя.
Решение было бы очень простым: указать один из файлов dist в качестве «основного» значения.
В качестве обходного пути я использую эту строку, которая работает:
import io from 'socket.io-client/dist/socket.io.slim.js'
Есть такая же проблема. Для меня работает обходной путь: +1:
Хороший!
У меня тоже работает обходной путь, спасибо!
У меня тоже работает, хорошая работа. спасибо @hyperknot !!
Чтобы другие знали, вот оно в консоли:
Зависимость debug
была возвращена к 3.1.0
, которую не нужно переносить. Выпущено в версии 2.3.1 .
Обратите внимание, что вы также можете использовать плагин webpack-remove-debug , чтобы удалить любой вызов зависимости отладки (пока мы не найдем правильный способ предоставить сборку с отладкой и без нее).
Самый полезный комментарий
У меня тоже работает обходной путь, спасибо!