mirage.js 不适用于 Angular 中的子 url 路径(仅适用于根路径)

Posted

技术标签:

【中文标题】mirage.js 不适用于 Angular 中的子 url 路径(仅适用于根路径)【英文标题】:mirage.js will not work with sub url paths (only with root path) in angular 【发布时间】: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) 老实说,我想不出任何 :( 如果您上传一个重现该问题的项目,我很乐意看看! 【参考方案1】:

我正在 Angular-9 中集成 mirage。

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

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

而不是做

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

尝试如下操作

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

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

【讨论】:

以上是关于mirage.js 不适用于 Angular 中的子 url 路径(仅适用于根路径)的主要内容,如果未能解决你的问题,请参考以下文章

异步验证器不适用于 Angular 中的模板驱动表单

模型绑定不适用于angular2中的选择[重复]

PhantomJS 不适用于 Angular2 项目中的 Karma

表单验证不适用于 Ionic 2 中的 Angular 2 FormBuilder

必需属性不适用于Angular Js中的文件输入

ngrok 不适用于浏览器中的路径(Angular Webserver)