Ошибка веб-надстройки Excel Angular: не удается сопоставить ни одного маршрута. Сегмент URL: 'index.html'

В моей надстройке Excel Angular Web я получаю следующую ошибку при переходе к новым маршрутам:

ОШИБКА Ошибка: Uncaught (в обещании): Ошибка: Не удается сопоставить ни один маршрут. Сегмент URL: 'index.html'

Однако маршруты продолжают работать. Как я могу это исправить?


person Joshua Wright    schedule 05.04.2018    source источник


Ответы (1)


По какой-то причине, когда Office.js включен, Angular 2+ добавляет # к маршруту. Например, URL-адрес по умолчанию для моей надстройки был http://localhost:3000/#/. .

Поэтому мне пришлось обновить модуль маршрутизации, чтобы использовать хэш:

RouterModule.forRoot(appRoutes, {useHash: true})

вместо:

RouterModule.forRoot(appRoutes)

Ссылка: https://docs.microsoft.com/en-us/office/dev/add-ins/develop/add-ins-with-angular2#use-the-hash-location-strategy-in-the-angular-application

person Joshua Wright    schedule 05.04.2018
comment
Я рад, что вы разблокированы, но для протокола: Office.js не добавляет # к маршрутам. Инфраструктура Angular сделает это в некоторых сценариях. Получит ли вы # или нет, зависит от вашей стратегии определения местоположения Angular и конфигурации маршрутизации. Ваше изменение реализовало стратегию расположения хеша. - person Rick Kirkham; 05.04.2018
comment
@RickKirkham Я думаю, что это нечто большее. До исправления, если я открывал веб-надстройку в Edge или Chrome, к URL-адресу постоянно добавлялся символ /#, что фактически приводило к сбою Chrome. В порядке эксперимента я удалил office.js, а затем перезапустил приложение. /# больше не добавлялся, и изменение маршрутов не приводило к ошибкам. Почему включение office.js приводит к такому поведению? - person Joshua Wright; 06.04.2018
comment
Боюсь, я не знаю, почему загрузка Office.js влияет на стратегию местоположения Angular. Я просто хотел уточнить, что в Office.js нет кода, который добавляет /# к URL-адресам. Загрузка Office.js приводит к тому, что Angular добавляет эту строку. Как вы уже обнаружили, вы должны использовать стратегию хэш-локации. Я обнаружил то же самое при создании этого примера: github.com/OfficeDev/Word-Add-in-Angular2-StyleChecker/blob/ - person Rick Kirkham; 07.04.2018