У меня есть локальный сервер, работающий в папке root, а моя папка webapp находится внутри этой папки root.
http://127.0.0.1:8887/ -> root
http://127.0.0.1:8887/webapp -> root/webapp
webapp содержит index.html, который ссылается на файл manifest.json в той же папке, что и эта.
<link rel = "manifest" href = "./manifest.json">
Файл манифеста webapp не обнаруживается Chrome в этой настройке.
manifest.json обнаруживается только в том случае, если локальный сервер запущен из папки webapp.
http://127.0.0.1:8887/ -> webapp
Я хочу, чтобы все было по-другому, как это сделать?
mainfest.json
{
"name": "Web app",
"short_name": "Web app",
"icons": [{
"src": "icons/icon-128x128.png",
"sizes": "128x128",
"type": "image/png"
}, {
"src": "icons/icon-144x144.png",
"sizes": "144x144",
"type": "image/png"
}, {
"src": "icons/icon-152x152.png",
"sizes": "152x152",
"type": "image/png"
}, {
"src": "icons/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
}, {
"src": "icons/icon-256x256.png",
"sizes": "256x256",
"type": "image/png"
}],
"start_url": "/webapp/",
"scope":"/webapp/",
"display": "standalone",
"background_color": "#3E4EB8",
"theme_color": "#2F3BA2"
}
@SumeetPatil По-видимому, он работал нормально, когда я разместил код на страницах Github и протестировал его там. Единственная разница в том, что в GH Pages был HTTPS. Не уверен, связано ли это с этим, но Chrome, похоже, не распознает файл манифеста в подкаталоге на локальном сервере.





1) HTTPS не требуется для работы PWA. Наличие действующего сертификата позволит избежать проблем с проверкой сертификата. Вы можете сгенерировать его для локального использования с помощью следующей команды.
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
2) Когда index.html и manifest.json находятся в одном файле, вы можете ссылаться на него без "." как показано ниже. Иногда это может быть связано с разницей в веб-сервере в том, как он решает путь. Да, в идеале "." однако следует ссылаться на текущую папку. Но стоит попробовать, чтобы ваш локальный сервер работал.
3) Не уверен, какой веб-сервер вы используете. В конечном итоге вам понадобится один с поддерживающим сервис-воркером (некоторые, например, ng serve в Angular, еще не поддерживают сервис-воркер). http-сервер - хороший вариант.
Установить -> npm install http-server -g
Запустите эту команду в папке сборки ->
http-server -o -i 172.22.49.205 -p 8080 -S
3) Если вы перейдете в Инструменты разработчика Chrome -> Приложение -> Манифест, и если появится сообщение «Манифест не обнаружен», то вы можете быть уверены, что манифест не появится, и одно из вышеперечисленных может помочь исправить это.
Можете ли вы изменить start_url до индексного файла - /webapp/index.html и попробовать. Я вижу эту часть developer.mozilla.org/en-US/docs/Web/Manifest