【问题标题】:Serving ember app from IIS resulting in UnrecognizedURLError从 IIS 提供 ember 应用程序导致 UnrecognizedURLError
【发布时间】:2016-01-07 15:35:18
【问题描述】:

我正在尝试从 IIS 提供 ember 应用程序。

我使用ember new my-app 创建了一个新应用,然后运行ember build --environment production。这会按预期在dist 目录中生成文件。

在 IIS 端,我在服务器上添加了一个新网站,并映射了上一步中的 dist 文件夹。

现在,当我导航到 localhost/index.html 时,我得到一个空白页。

我检查了页面的来源,并且 js 文件按预期正确提供。这意味着模板没有被正确检索。在 chrome 检查器控制台中,有一个异常,上面写着Uncaught: UnrecognizedURLError: /index.html。 ember 检查器显示“未检测到 Ember 应用程序!”。

我已经尝试了here 提到的解决方案,但没有一个对我有用。

有没有其他人遇到过这个问题/知道如何解决这个问题?

【问题讨论】:

  • 如果没有index.html 部分,你可以让它工作吗?
  • 嗨,keo。我不确定你是什么意思。你的意思是让 IIS 自动在 localhost/ 上提供 index.html 吗?
  • 是的,它可能不会解决你的问题,但至少它会起作用。
  • 是的,它不能解决问题。就像我提到的那样,该页面的服务很好。没有提供的是车把模板(我认为)。
  • 车把没有问题,应用程序崩溃是因为 url/server。这就是为什么 ember 检查员说 Ember application not detected! - 它没有启动。

标签: javascript iis ember.js ember-cli


【解决方案1】:

Ember 路由器默认使用location: history。这意味着,它假定 /index.html 是您的路线。但显然它没有定义,所以路由器抛出UnrecognizedURLError

您的问题有几种解决方案:

  1. 在您的 ember 应用程序的 config/environment.js 中设置 locationType: 'hash'。这将强制 Ember 路由器在 url 中使用 # 进行路由,在您的情况下,这将类似于 localhost/index.html#your/route

  2. 将您的 IIS 实例配置为将 index.html 作为默认文档处理。为此,请打开您的服务器配置并确保它具有密钥:

  1. 更改 ember 构建配置以生成 index.aspx 而不是 index.html。你可以阅读它here

【讨论】:

  • 另外,请确保您在 IIS 中创建了站点,而不是虚拟目录。后者将导致引用站点根目录的 URL(任何以“/”开头的 URL)在您的虚拟目录是其子站点的站点的根目录中查找文档/路由。
  • 确实有效。不过这有点奇怪。我已经尝试将 locationType 更改为“hash”和“auto”,但没有成功。再次将其更改为“哈希”对我有用。谢谢。
猜你喜欢
  • 2018-08-17
  • 2017-03-13
  • 2014-11-29
  • 2011-10-22
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多