Как исправить ошибку «Не разрешено загружать локальный ресурс» в electron из-за «#», преобразованного в «#»

#javascript #node.js #angular #electron

#javascript #node.js #angular #electron

Вопрос:

Я создаю приложение angular-electron (Angular 7). Я хочу загрузить новое окно браузера, но я получаю сообщение «Не разрешено загружать локальный ресурс».

Все в порядке, если я пытаюсь загрузить просто index.html . Но проблема в том, что я хочу загрузить ‘/index.html #/settings’.

 // Create a browser window
var win = new BrowserWindow({
       width: 800,
       height: 600,
       center: true,
       resizable: false,
       frame: true,
       transparent: false
     });
// Load the page   route
win.loadURL('file://'   __dirname   '/index.html#/settings');
  

Я вижу в сообщении об ошибке, что «#» в URL преобразуется в «#», поэтому вместо «… /index.html # /settings» он пытается загрузить «…/index.html#/settings». Я предполагаю, что если бы я мог предотвратить преобразование «#» в «#», у меня не было бы этой проблемы.

Полная ошибка:

Не разрешено загружать локальный ресурс: file:///Users/username/Development/trackapp/release/mac/The Track Tim…ces/app.asar/dist/index.html#/settings

Комментарии:

1. Как насчет прямого перенаправления из вашего приложения Angular вместо этого?

2. @briosheje Я предположил, что было бы проще просто добавить как есть (на самом деле не angular pro). Кстати, я проверяю, является ли это производством или разработчиком, и если это разработчик, я запускаю win.loadUrl (‘ localhost: 4200 / # /settings /’ ), и все работает нормально. Но описанная ошибка находится в упакованном приложении electron.

3. это из-за политики безопасности, из-за того, что экземпляр браузера пытается загрузить небезопасный ресурс. Правильно ли это работает с win.loadURL('file://' __dirname '/index.html'); ?

4. @briosheje Да, «Все в порядке, если я пытаюсь загрузить просто index.html . Но проблема в том, что я хочу загрузить ‘/index.html #/settings’.»

5. @briosheje Кроме того, я уверен, что это сработает, если ‘#’ не заменить на «#». Я получаю то же сообщение об ошибке, когда файл не найден. Если бы я мог запретить electron (или angular) преобразовывать ‘#’ в ‘% 23’, это, вероятно, будет работать нормально.