Aurelia 路由器在项目中托管时失败
Aurelia router fails when hosted in Project
我正在创建 Microsoft Office Project Professional 2016 加载项(不是 VSTO,而是新的 Office add-ins model)。我制作了一个基本的网络应用程序,使用 ASP.NET 核心与 Aurelia、Webpack 和 TypeScript(尚未引用任何 office-js api),并部署了加载项清单。这行得通,我可以在 Project 的侧窗格中加载加载项。
问题出在我将路由器添加到我的应用程序时。当托管在 Project 中时,应用程序静默失败,并且不会在页面中呈现。通过附加 Windows 10 F12 开发人员工具并查看控制台,我可以看到 Aurelia 应用已启动,并且 configureRouter()
在 app.ts 中被调用。在那之后似乎有些事情失败了,但我找不到在哪里放置断点来获取更多信息。如果我尝试连接到 component lifecycle,则会调用 bind
但不会调用 attached
。
Web 应用程序在 Chrome、Firefox、Edge 和 IE 11 中正确加载,无论是否使用路由器。
这是因为 history.pushState
和 history.replaceState
在 Office AddOn 上下文中被禁用,因此路由器在尝试调用这些功能时会失败(它确实支持历史记录 forward/backward导航)。
您可以通过打开 vendor.bundle 并搜索 BrowserHistory.prototype.navigate
and/or BrowserHistory.prototype.activate
并在其开头放置断点来在调试器中找到它。它应该在其中之一失败。
您可以尝试同时设置 config.options.pushState = false
和 config.options.hashChange = false
以完全禁用状态管理 (afaik),但我自己从未实际尝试过。
您可能需要推出适用于该项目的 stripped-down BrowserHistory
自己的实现,并简单地用它替换现有的 History
和 BrowserHistory
键在您的根容器中实施。
我正在创建 Microsoft Office Project Professional 2016 加载项(不是 VSTO,而是新的 Office add-ins model)。我制作了一个基本的网络应用程序,使用 ASP.NET 核心与 Aurelia、Webpack 和 TypeScript(尚未引用任何 office-js api),并部署了加载项清单。这行得通,我可以在 Project 的侧窗格中加载加载项。
问题出在我将路由器添加到我的应用程序时。当托管在 Project 中时,应用程序静默失败,并且不会在页面中呈现。通过附加 Windows 10 F12 开发人员工具并查看控制台,我可以看到 Aurelia 应用已启动,并且 configureRouter()
在 app.ts 中被调用。在那之后似乎有些事情失败了,但我找不到在哪里放置断点来获取更多信息。如果我尝试连接到 component lifecycle,则会调用 bind
但不会调用 attached
。
Web 应用程序在 Chrome、Firefox、Edge 和 IE 11 中正确加载,无论是否使用路由器。
这是因为 history.pushState
和 history.replaceState
在 Office AddOn 上下文中被禁用,因此路由器在尝试调用这些功能时会失败(它确实支持历史记录 forward/backward导航)。
您可以通过打开 vendor.bundle 并搜索 BrowserHistory.prototype.navigate
and/or BrowserHistory.prototype.activate
并在其开头放置断点来在调试器中找到它。它应该在其中之一失败。
您可以尝试同时设置 config.options.pushState = false
和 config.options.hashChange = false
以完全禁用状态管理 (afaik),但我自己从未实际尝试过。
您可能需要推出适用于该项目的 stripped-down BrowserHistory
自己的实现,并简单地用它替换现有的 History
和 BrowserHistory
键在您的根容器中实施。