Мое электронное приложение случайным образом перенаправляет на chrome-error://chromewebdata, и я понятия не имею, почему. В консоли нет ошибок и т.д.
Когда приложение Electron запускается впервые, открывается окно, и оно перенаправляется из моего приложения на этот URL-адрес, и я вижу пустой пустой белый экран. Взаимодействие с пользователем не требуется, оно просто происходит при запуске приложения.
Если я открою devtools, я увижу, что window.location.href содержит chrome-error://chromewebdata вместо http://localhost:9080 (приложение Electron запускается с использованием URL-адреса локального хоста).
Я попытался удалить локальную папку данных Electron/Chrome в ~/Library/Application Support/my-app-name и начать заново, но безуспешно.
По каким причинам Chrome (в Electron?) может решить перенаправить на chrome-error://chromewebdata?
@snwflk Да, никакого взаимодействия с пользователем, как только электронное приложение загружается и открывается окно, оно перенаправляется туда. Я вижу URL-адрес в window.location.href, когда проверяю, почему окно превратилось в пустой белый экран. Обновлен вопрос, чтобы описать эти детали.
URL-адрес ошибки указывает на недопустимый URL-адрес. Если вы переходите на несуществующий веб-сайт в Chrome, вы также получаете это значение для window.location.href. Есть ли момент, когда ваше приложение загружается/отображается правильно? Вы перемещаетесь где-нибудь в своем коде? Можете ли вы перейти к URL-адресу вашего локального хоста в браузере (то есть не в Electron)?
@snwflk На мгновение я вижу цвет фона моего приложения, так что он, по крайней мере, попал в CSS во время синтаксического анализа во время работы localhost:9080. И если я посещаю localhost:9080 в Chrome, я получаю Uncaught ReferenceError: require is not defined, что имеет смысл и указывает на то, что по крайней мере какой-то JS-код выполняется в Electron, где определено require. Если я вернусь к localhost:9080 с помощью location.replace, я снова увижу фон приложения, а затем через короткое время он перенаправит обратно на chrome-error://chromewebdata. Хммм...
@snwflk У вас есть пример кода, который заставит Chrome / Electron перейти по этому URL-адресу?
Можете ли вы проверить вывод на вкладке «Сеть» в DevTools? Обязательно установите флажок «Сохранить журнал». Старайтесь наблюдать за поведением с самого начала. Может быть, есть указание на то, что происходит.
@snwflk Интересно, спасибо за подсказку. Я нашел "неудачное" соединение. Прямо перед переходом к этому URL-адресу chrome-error на вкладке сети отображается net::ERR_CONNECTION_REFUSED в подсказке при наведении курсора на неудавшийся URL-адрес. Но нет намека, почему. Затем я вставил неудачный URL-адрес в Chrome и обнаружил, что он перенаправляет на localhost:5000, которого нет на моем компьютере. Но Chrome показывает полезное сообщение в середине представления, а также сохраняет localhost:5000 в адресной строке, что делает его очевидным, и не перенаправляет на страницу chrome-error, как это происходит в Electron. Спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


По какой-то причине ваш код пытается перейти к недопустимому (несуществующему) URL-адресу, в результате чего window.location.href становится chrome-error://chromewebdata.
Повторюсь: прямого перенаправления на chrome-error://chromewebdata нет, вместо этого используется URL-адрес, который не существует или недоступен.
Проверьте, не вызывает ли ваш код эту навигацию (возможно, перенаправление). Очень полезно проверить вкладку «Сеть» в DevTools, убедившись, что установлен флажок «Сохранить журнал». Это должно дать некоторое представление о том, что именно происходит.
что мне делать, если мне нужно обработать глубокую ссылку из окна браузера?
Как обрабатывать мертвые ссылки в Electron? Я думаю, что это другой вопрос, требующий нового вопроса SO.
Я нашел способ справиться с этим через registerFileProtocol. Я свяжу ответ здесь позже :)
Это происходит для меня в моем проекте Electron на основе Угловой. В моем случае проблема в том, что сервер Angular Webpack не готов принимать запросы, когда я впервые запускаю проект. Это происходит только при запуске, и простая перезагрузка может обойти это — любые живые изменения в коде Angular обновят страницу без каких-либо проблем.
Это не проблема в продакшене, так как я переключаюсь на загрузку статических файлов в своих релизах.
Чтобы сделать это немного менее раздражающим, я добавил задержку к запуску электрона:
"start": "concurrently -k \"ng serve\" \"npm run delay && nodemon\"",
"delay": "node -e \"setTimeout(() => true, 3000)\"",
Где:
И просто для ясности, мои nodemon.json:
{
"watch": ["nucleus"],
"ext": "*",
"exec": "tsc -p nucleus/tsconfig.json && electron ."
}
вид-vhcl-cntr-ctgrs.tpl
я заменяю это имя файла, как показано ниже.
вид-vhclcntr-ctgrs.tpl
и это сработало....
Как сейчас написано, ваш ответ неясен. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, которая поможет другим понять, как это относится к заданному вопросу. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.
Это происходит без какого-либо взаимодействия с пользователем? Где именно вы видите URL-адрес, на который ссылаетесь?