Aurelia:历史必须实现 activate()

Aurelia: History must implement activate()

我是 Aurelia 的新手,正在尝试使用 id 实现一些 'simple' 动态路由。

config.map([
    { route: 'questions/:id', . . .}
    ]);

我收到一个运行时错误,表明我缺少 activate() 方法。

aurelia-history.js:4 Uncaught (in promise) Error: History must implement activate().
    at mi (aurelia-history.js:4)
    at History.activate (aurelia-history.js:13)
    at AppRouter.activate (aurelia-router.js:1743)
    at aurelia-router.js:1722

我知道缺少 activate() 并且它会掉落到原型并抛出此错误,我只是不知道在哪里添加 activate()。我在我的模块中有它,但我应该以某种方式在我的应用程序 class 或这个历史对象中有一个吗?

谢谢

-约翰

您遇到此问题的原因是您没有通过以下方式在您的插件中包含 aurelia-history-browseraurelia.use.history()aurelia.use.standardConfiguration()

aurelia-history-browser 模块实现了 aurelia-history 抽象 class History,它是浏览器原生 History 的包装器。 abstract class History 基本上在你调用它的时候抛出一个方法名的错误,就像你看到的错误。

好吧,为了其他挣扎者的利益,我试着回顾我的步骤并拼凑出我是如何解决我的问题的——挑战是我改变了很多变量。 但我相信我能够重新创建我的错误,并且我以与以前相同的方式破坏了我的应用程序。 当我将我的 aurelia-router 版本从 1.2.1 升级到 1.6.2 时,错误可能已经开始出现。

这是我的旧 package.json:

{
  "name": "ClientWeb",
  "private": true,
  "version": "0.0.0",
  "devDependencies": {
    "@types/webpack-env": "^1.13.0",
    "aspnet-webpack": "^2.0.1",
    "aurelia-bootstrapper": "^2.0.1",
    "aurelia-fetch-client": "^1.0.1",
    "aurelia-framework": "^1.1.0",
    "aurelia-loader-webpack": "^2.0.0",
    "aurelia-pal": "^1.3.0",
    "aurelia-router": "^1.2.1",
    "aurelia-webpack-plugin": "^2.0.0-rc.2",
    "bootstrap": "^3.3.7",
    "css-loader": "^0.28.0",
    "extract-text-webpack-plugin": "^2.1.0",
    "file-loader": "^0.11.1",
    "html-loader": "^0.4.5",
    "isomorphic-fetch": "^2.2.1",
    "jquery": "^3.2.1",
    "json-loader": "^0.5.4",
    "style-loader": "^0.16.1",
    "ts-loader": "^2.0.3",
    "typescript": "^2.2.2",
    "url-loader": "^0.5.8",
    "webpack": "^2.3.3",
    "webpack-hot-middleware": "^2.18.0"
  },
  "dependencies": {
    "@types/vis": "^4.21.7",
    "vis": "^4.21.0"
  }
}

当时我正在将几个库升级到最新版本,但我尝试恢复到原来的 package.json 并且刚刚更新了 aurelia-router 版本 -它会产生原始错误。

希望这对某人有所帮助。

-约翰