我有一个Django应用程序,它需要几个JavaScript文件。
在Chrome中,我得到错误“资源解释为脚本,但传输MIME类型text/html”。
x1c 0d1x的数据
AFAIK(参见2)为了解决这个问题,我需要配置Django,以便JavaScript文件返回内容类型为“application/x-javascript”。
如何在Django中做到这一点?
**更新:**我听从了丹尼尔Roseman的建议,找到了以下解决方案。
1)修改urls.py:
urlpatterns = patterns('',
...
url(r'.*\.js$', java_script),
...
)
字符串
2)将以下函数添加到views.py:
def java_script(request):
filename = request.path.strip("/")
data = open(filename, "rb").read()
return HttpResponse(data, mimetype="application/x-javascript")
型
8条答案
按热度按时间pb3s4cty1#
我在Django服务器上遇到了一个问题,Django将JavaScript文件作为text/plain提供给服务器,这在ES6模块上不太好用。我发现here,你可以通过在www.example.com中放置以下行来更改文件扩展名关联settings.py:
字符串
JavaScript文件现在被用作
application/javascript
。3z6pesqy2#
我怀疑问题不是你想的那样。实际上可能发生的情况是,您的JS文件根本没有得到服务:相反,Django错误页面被发送。你得找出原因。
yvgpqqbh3#
扩展Alexandre的答案,使用将下面的代码放到你settings.py的主项目的www.example.com中。之后,您需要清除浏览器缓存(您也可以通过打开一个匿名窗口来测试它),以便显示调试面板。
字符串
kkbh8khc4#
既然这不会阻止浏览器正确解释脚本,为什么这是一个问题?
runserver
仅用于开发(非生产使用),因此不是一个完整的Web服务器。您应该继续在开发中使用它,并在迁移到生产环境时为静态文件适当地配置Web服务器。
但是,如果您 * 绝对必须 * 使用开发服务器来提供静态文件;查看如何提供静态文件。
9udxz4iz5#
对于Django,在视图中使用请求上下文:
字符串
p5cysglq6#
即使在将@piephai的解决方案添加到我的settings.py之后,我今天也遇到了这个错误。然后我注意到@丹尼尔Roseman也说对了:我的导入路径是错误的,我不得不添加“.js”到所有的路径中,例如:
import {HttpTool} from "./requests";
变为import {HttpTool} from "./requests.js";
在考虑如何生成静态文件的路由后,这是有意义的。
nfs0ujit7#
文档中描述了问题的解决方案
HKEY_CLASSES_ROOT\.js\Content Type
设置为text/javascript
。mwg9r5ms8#
下面的代码已经为我工作。我想mime类型在最近的django版本中已经被弃用了?
字符串