【问题标题】:Aurelia: History must implement activate()Aurelia:历史必须实现 activate()
【发布时间】:2018-10-05 08:52:53
【问题描述】:

我是 Aurelia 的新手,正在尝试使用 id 实现一些“简单”的动态路由。

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()。我的模块中有它,但我应该以某种方式在我的 App 类或这个历史对象中有一个吗?

谢谢

-约翰

【问题讨论】:

  • Do not post images of code or errors! 图片和屏幕截图可以很好地添加到帖子中,但请确保帖子在没有它们的情况下仍然清晰且有用。如果您发布代码或错误消息的图像,请确保您也复制并粘贴或直接在帖子中输入实际代码/消息。

标签: aurelia


【解决方案1】:

好的,为了其他奋斗者的利益,我尝试追溯我的步骤并拼凑我如何解决我的问题 - 挑战是我改变了许多变量。 但我相信我能够重新创建我的错误,并且我以与以前相同的方式破坏了我的应用程序。 当我将 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 版本 - 它产生了原来的错误。

希望这对某人有所帮助。

-约翰

【讨论】:

  • 非常好。干得好@JohnKoz :)
【解决方案2】:

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

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

【讨论】:

  • 这是很好的指导,希望对其他人有所帮助。对于我的问题,我认为我在使用 WebPack 和 node_modules 时遇到了一些问题。我很快就进入了更新地狱,最终删除了我的 node_modules 并更新到最新的模块并重新安装。它现在可以工作了,我已经有了 standardConfiguration() 方法。非常感谢!
  • @bigopen - 感谢您花时间回复,但我很难将其标记为接受,因为它不符合规定的指导:“点击接受此答案,因为它解决了您的问题或对找到您的解决方案最有帮助...”这不是我的问题,指导并没有帮助我解决我的问题,但它确实是一个很好的回应,其他人可能会觉得很有价值。
  • 我明白了,您的问题的解决方案应该结合我的回答和您所做的。如果您能自己回答并将其标记为已接受,那就太好了,因为它将帮助未来的人们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多