【问题标题】:mirage.js will not work with sub url paths (only with root path) in angularmirage.js 不适用于 Angular 中的子 url 路径(仅适用于根路径)
【发布时间】:2020-06-09 13:36:41
【问题描述】:

当通过根 url (localhost:4200/) 执行后端调用时,Mirage 确实匹配定义的路由,但是当我们在子页面上执行后端调用时,例如:localhost:4200/process,它将不起作用。在调试海市蜃楼代码时,它会尝试通过在要匹配的 URL 前加上“进程”来进行匹配。 因此,如果 BE 调用是“api/portal/affiliates/”,它将尝试匹配“process/api/portal/affiliates/”,但由于不存在匹配路径而失败。知道如何解决这个问题。

我们在 Angular 9 中使用 mirage.js。 roue mirage.js 配置:

    routes() {
      this.passthrough();

      this.namespace = '/api/portal;
      this.get('affiliates', (schema, request) => {
        return schema.db.affiliates;
      })
}

【问题讨论】:

  • 嗯 - 我从来没有听说过 Mirage 的处理程序路径会受到当前窗口位置的影响。你确定不是你的应用程序在打不同的电话吗?另外,尝试在 this.get('/affiliates') 上使用前导斜杠,或者在命名空间上使用尾随斜杠?
  • 感谢@SamSelikoff,我们也尝试使用前导斜线。该应用程序没有发出不同的调用,当我们在没有海市蜃楼的情况下运行它时会看到。知道为什么它使用窗口位置吗? (我看到的所有工作示例都只使用根 url)
  • 老实说,我想不出任何 :( 如果您上传一个重现该问题的项目,我很乐意看看!

标签: angular ember-cli-mirage miragejs


【解决方案1】:

我正在 Angular-9 中集成 mirage。

我也面临同样的问题。每次在包含某些路由的任何 URL 上刷新页面时,都会引发 mirage 找不到路由的错误。

问题不在于海市蜃楼。问题是我如何调用 API。

而不是做

this.http.get('api/portal')

尝试如下操作

this.http.get('/api/portal')

在调用 API 时添加 /(正斜杠)。 这解决了我的问题。如果仍然无法解决您的问题,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-29
    • 2011-07-12
    • 2019-01-16
    • 2017-08-28
    • 2019-10-13
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    相关资源
    最近更新 更多