ember.js 正在从文件和Ember CLI Mirage中提取内容

3npbholx  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(182)

我在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的请求,并允许它通过任何其他未定义相应路由的请求?

w1e3prcc

w1e3prcc1#

Passthrough(和一般的路由API)有一些令人遗憾的奇怪行为,这是基于它的编码方式+它用来拦截请求的底层库。我们需要更新指南,因为其他人已经遇到了这个问题。
如果你把

this.namespace = 'api'
this.passthrough()

则Mirage将允许对/api/*的所有请求通过,但如果您将对passthrough的调用移到之前,* 或 * 将命名空间“重置”为空字符串,则Mirage应处理对当前域的所有请求。
我需要测试,但我会尝试两种方法

this.namespace = ''
this.passthrough()

this.passthrough('/**')

看看它们是否能工作。(我们真的需要在Mirage中添加一个嵌套的路由DSL!它将删除所有这些笨拙的API。)

2vuwiymt

2vuwiymt2#

就第二个问题而言,似乎下面的话解决了它:

this.passthrough('https://localhost:4201/markdown/faqs-content.md');
  this.passthrough();

相关问题