Webpack - Ошибка загрузки блока 0

Некоторые из моих пользователей получают эту ошибку:

Неподтвержденное сообщение об отклонении: стек "Сбой при загрузке 0": загрузка chunk 0 сбой в HTMLScriptElement.n

Проблема в том, что я не успеваю ее воспроизвести. и у меня есть эта ошибка в течение некоторого времени.

Это происходит для тех же пользователей, каждый, когда они входят на веб-сайт. но только для некоторых из них. Тем не менее, все они используют Win7 + Chrome 60, поэтому он не связан с браузером.

Я не мог найти что-либо в Интернете для этой конкретной ошибки. Кроме того, я не использую реактивный маршрутизатор, я использую реакцию.

Любые идеи, что еще может быть неправильно?

Может быть, это связано с чем-то, связанным с некоторой безопасностью?

Я использую webpack 2.6.1 и CommonsChunkPlugin, чтобы создать кусок для моих поставщиков.

Пользовательский агент одного из пользователей, получивших ошибку:

Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/60.0.3112.113 Safari/537.36

Ответ 1

Причиной этого является то, что я использовал require.ensure с webpack, который создает куски и использует jsonp для добавления этого script по запросу, иными словами, он добавляет тэг script src в html с созданным chunk file.

Похоже, что некоторые пользователи имеют расширения или даже некоторую конфигурацию для блокировки таких запросов jsonp независимо от того, является ли он тем же самым доменом или нет.

Одно решение вообще не использует require.ensure, либо использует обратный вызов ошибки для обработки этого сценария.

Кроме того, мы искали способ, которым webpack загрузит script с помощью xhr + eval, что предотвратит такие сценарии. Я только что нашел этот модуль npm: https://github.com/elliottsj/xhr-eval-chunk-webpack-plugin, но я ожидал, что он будет больше поддерживаться самим веб-пакетом.

Я открыл для этого проблему: https://github.com/webpack/webpack/issues/5630, надеюсь увидеть некоторые успехи.

Ответ 2

Ответ для поиска от Google:

В моем случае Error: Loading chunk 9 failed. выстрелил только в Firefox. Вызывается положительным взглядом за регулярное выражение. (?<=...)

Обратите внимание, что эта функция еще не поддерживается во всех браузерах; использовать по своему усмотрению!

Ответ 3

Проблема может быть вызвана:

  • Нестабильная интернет-связь
  • Неправильный/неправильно сформированный кеш браузера

Единственное решение, которое я нашел, это повторить загрузку чанка с помощью этого плагина Webpack: https://github.com/mattlewis92/webpack-retry-chunk-load-plugin

Будет:

  • Повторите загрузку фрагмента раз в секунду.
  • Добавит запрос " ?cache-bust=X чтобы избежать (возможно, искаженного) кэшированного файла JS.

Недостатком является то, что он уходит на неопределенный срок.

Ответ 4

Просто проверьте путь, по которому будет загружен ваш файл чанков (js файлы). Проверьте путь deployURL в файле angular.json.

"build": {
    "builder": "@angular-devkit/build-angular:browser",
    "options": {
      "outputPath": "./Scripts/app",
      "deployUrl": "./Scripts/app/",
      "index": "app/index.html",
      "main": "app/main.ts",
      "polyfills": "app/polyfills.ts",
      "tsConfig": "tsconfig.app.json",
      "aot": false,
      "assets": [
        "app/favicon.ico",
        "app/assets"
      ],