【问题标题】:Serving a iframe content from Ember app during development在开发期间从 Ember 应用程序提供 iframe 内容
【发布时间】:2017-03-13 16:12:06
【问题描述】:

我的 Ember 应用中有一个 public/uploads/... 文件夹,用于保存用户上传的所有文件。它包括图像、视频以及一些我想通过应用程序中的iframe 提供的.html 文件。

我正在尝试在组件中提供这些 iframe:

<iframe src="/public/uploads/folder/file.html">

开发服务可能正在接收对file.html 的请求并检查路由器,因为它看起来像一个普通的GET 请求而不是资产。这正确地给我留下了一个错误:

Uncaught UnrecognizedURLError

有什么方法可以告诉ember-cli 开发服务器我希望它为该特定文件夹提供服务?

【问题讨论】:

  • 你在使用 ember-cli-mirage 吗?如果是这样,您应该添加:this.passthrough('/public/uploads/folder/**'); 到 mirage/config.js
  • 谢谢。我实际上已经尝试过,但它不起作用。据我所知,这个请求没有到达 Mirage,因为路由器将其识别为页面请求,然后在我的路由中找不到它。

标签: ember.js ember-cli


【解决方案1】:

最好将上传文件保存在 public 文件夹之外,例如在单独的uploads 文件夹中。

要告诉开发服务器为特定文件夹提供服务,请运行以下命令:

 ember g server

这将生成一个server/index.js,然后您可以对其进行自定义。

在导出的函数中添加以下行:

var express = require('express');
app.use('/uploads', express.static(__dirname + "/../uploads"));

最后,如果您还没有使用 express 依赖项,请安装它:

npm install express --save-dev

现在,在启动 Ember 开发服务器后,uploads 文件夹中的任何文件都可以提供服务。

【讨论】:

  • 这非常有效。到底发生了什么?据我所知,server/index.js 允许我们自定义开发服务器 ember-cli 运行,我们告诉它在看到对 /upload/... 的请求时使用 express?
猜你喜欢
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多