Прогрессивное веб-приложение работает при локальной настройке, но при постановке консоль Chrome читает «Манифест: строка: 1, столбец: 1, синтаксическая ошибка» - PullRequest
0 голосов
/ 14 января 2020

У меня есть два отдельных, но связанных, прогрессивных веб-приложения, каждое из которых имеет файл manifest.json. Одно приложение доступно на /foo/app, а другое - на /bar/app в том же домене. Файл manifest.json доступен в /foo/app/manifest.json и /bar/app/manifest.json соответственно.

На моей локальной машине они работают отлично (при условии, что я запускаю Chrome с несколькими специальными флагами командной строки, чтобы игнорировать подписанные сертификаты). Я могу установить оба приложения и получить доступ со своего телефона Android через ngrok, а также установить их там. Однако после того, как я загрузил все в стадию, я увидел эту консольную ошибку в Chrome:

Manifest: Line: 1, column: 1, Syntax error.

. Я просмотрел файл с помощью зубчатого гребня и не смог найти никаких проблем. Я прочитал другие вопросы переполнения стека, но пришел dry. Я нашел эту статью W3 о манифесте. json и решил изменить имя файла с manifest.json на manifest.webmanifest и использовать его с MIME-типом application/manifest+json (согласно w3 рекомендации). Ничто из этого не имело никакого значения.

Почему при постановке возникает синтаксическая ошибка, когда она отлично работает на локальной системе? Единственное отличие состоит в том, что моя локальная установка использует самозаверяющий SSL / Сертификат TLS, поэтому, если что, я удивляюсь, что работает на локальном через ngrok!

Вот мой manifest.webmanifest файл:

{
  "short_name": "Foo",
  "name": "Foo",
  "icons": [
    {
      "src": "/img/foo-logo-no-text-192x192.png",
      "type": "image/png",
      "sizes": "192x192"
    },
    {
      "src": "/img/foo-logo-no-text-512x512.png",
      "type": "image/png",
      "sizes": "512x512"
    }
  ],
  "start_url": "/foo/app/?source=pwa",
  "background_color": "#54799C",
  "display": "standalone",
  "scope": "/foo/app/",
  "theme_color": "#54799C"
}

1 Ответ

1 голос
/ 14 января 2020

Нашел проблему. Этот ответ работал для меня.

Короче говоря, я добавил crossorigin="use-credentials" к элементу <link rel="manifest"> в моем разделе <head>.

...