我在Ember应用程序中有一个组件,它从静态减价文件中返回数据。
didInsertElement() {
fetch('markdown/faqs-content.md').then(response => {
response.text().then(result => {
this.set('markdown', result);
});
});
}
当应用程序运行时,请求转到http://localhost:4200/markdown/faqs-content.md
,一切正常。
然而,在幻影中,我得到这样的错误:Mirage: Your app tried to GET '/markdown/faqs-content.md', but there was no route defined to handle this request. Define a route for this endpoint in your routes() config. Did you forget to define a namespace?
个
即使mirage/config.js
中包含以下内容,也会发生上述情况:this.passthrough();
这可能是因为请求URL中不包括API命名空间。
可以通过向passthrough添加完整URL来解决此问题:this.passthrough('https://localhost:4201/markdown/faqs-content.md');
这样做有两个问题:
1.我并不总是知道应用程序在哪个端口上运行,并且
1.我不想失去使用this.passThrough()
的功能,它会自动为mirage/config.js
中没有相应路由的任何API请求调用pass through。
因此,我有两个问题。
1.在config.js
中,有没有办法让Ember服务器运行的端口允许https://localhost:${port}/markdown/faqs-content.md
之类的东西?
1.是否有一种方法可以将Mirage配置为通过https://localhost:4201/markdown/faqs-content.md
的请求,并允许它通过任何其他未定义相应路由的请求?
2条答案
按热度按时间w1e3prcc1#
Passthrough(和一般的路由API)有一些令人遗憾的奇怪行为,这是基于它的编码方式+它用来拦截请求的底层库。我们需要更新指南,因为其他人已经遇到了这个问题。
如果你把
则Mirage将允许对
/api/*
的所有请求通过,但如果您将对passthrough
的调用移到之前,* 或 * 将命名空间“重置”为空字符串,则Mirage应处理对当前域的所有请求。我需要测试,但我会尝试两种方法
和
看看它们是否能工作。(我们真的需要在Mirage中添加一个嵌套的路由DSL!它将删除所有这些笨拙的API。)
2vuwiymt2#
就第二个问题而言,似乎下面的话解决了它: