【发布时间】:2012-07-04 19:07:13
【问题描述】:
所有, 几周前我在Meteor's GitHub page 上发布了这个问题,但没有得到答复。这个问题看起来很简单,也许没人能相信我。
以下是重现问题的步骤。我创建了一个名为“foo”的全新香草流星项目,使用:
meteor create foo
我在其中创建了一个“公共”文件夹并在其中复制了一张图片 (troll.jpg)。
然后我编辑了 foo.html 独家来显示图片。我从流星的示例中看到,与公共文件夹中的内容对应的 URL 只是 / 。
<head>
<title>foo</title>
</head>
<body>
<img src="/troll.jpg">
</body>
我删除了我不使用的 foo.js 和 foo.css。
然后我启动流星,页面只显示一个损坏的图像占位符。网络浏览器的控制台(MacOS 的 Chrome 20.0.1132.47)说:
Resource interpreted as Image but transferred with MIME type text/html: "http://localhost:3000/troll.jpg". innerhtml.js:80
_htmlToFragment innerhtml.js:80
Meteor.ui.render liveui.js:33
(anonymous function) template.foo.js:1
ready startup_client.js:9
使用 Safari 我得到了同样的结果。 Meteor 在 GitHub 上的示例似乎可以正常工作。我究竟做错了什么?谢谢。
G.
【问题讨论】:
-
你在你的 JS 代码中做了什么特别的事情吗?当您从 Meteor 的服务器部署和测试它时,是否也会发生这种情况?如果在
src属性中不包含 /,它的行为会有所不同吗?我在你的解释中没有看到任何明显的错误,并且认为这只是工作...... -
现在也经过测试,无法在 Gentoo 上的 Google Chrome 上重现,但我在开发分支上。对我来说,我只是将
image/png作为 MIME 类型... -
谢谢汤姆。我在另一台 Mac 上重复了这个实验,一切正常,没有 MIME 警告。我曾尝试重新安装流星并对应用程序进行“流星重置”,但没有以这种方式实现任何目标。所以,看起来我的第一台 Mac 使用错误的 MIME 标头向 Web 浏览器提供图像,但这怎么可能呢?
-
您的第一台笔记本电脑上是否已经安装了 Node.js?它或节点模块的不同版本也可能导致问题。
-
新发现!这不是 MIME 问题。我相信我的流星实例无法识别我正在从“公共”文件夹请求内容,因此像任何其他 URL 一样响应图像的 URL……这意味着返回“网站”而不是图像。证明是 curl localhost:3000 和 curl localhost:3000/troll.jpg 具有相同的输出,即流星渲染的网页!现在怎么办?流星在哪里理解 URL 指的是公共的,会出现什么问题? (例如文件权限、区分大小写的文件系统...)
标签: meteor