requirejs text plugin将html解释为脚本

时间:2013-03-29 21:40:07

标签: javascript cross-domain requirejs requirejs-text

我使用require.js文本插件(https://github.com/requirejs/text)从服务器加载我的html模块。

服务器有另一个主机,因此通过在require.config对象中使用Xhr来允许coss-domain-request。

text: {
  useXhr: function (url, protocol, hostname, port) {
    // allow cross-domain requests
    // remote server allows CORS

    return true;
  }
},

但是当我加载一些模块时,浏览器会尝试将加载的文件解释为javascript文件。

define([
  'text!/view_templates/header.html'], function(html){
    console.log(html) 
})
在更加光明的地方获得:

  

资源解释为脚本但以MIME类型传输   为text / html:   " http://app-id.appspot.com/gadget/js/app/view_templates/header.html&#34 ;.   require.js:1843 Uncaught SyntaxError:意外的令牌< header.html中:1

有没有人知道问题出在哪里?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

花了我很多时间才发现here。 useXhr可能因为配置密钥不正确而无法调用。它不仅仅是text,它还需要包含路径。所以它应该是:

'some/path/to/text': {
  useXhr: function (url, protocol, hostname, port) {
    return true;
  }
},

或者也应该起作用:

text: {
  useXhr: function (url, protocol, hostname, port) {
    return true;
  }
},
paths: {
    text: 'some/path/to/text'
}