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 路径(仅适用于根路径)的主要内容,如果未能解决你的问题,请参考以下文章
PhantomJS 不适用于 Angular2 项目中的 Karma