Javascript 加载带有下划线的模板时出错
我有一个requirejswebapp,它加载了很多库(jsfiddle加载相当复杂)。但最重要的一点是:Javascript 加载带有下划线的模板时出错,javascript,backbone.js,requirejs,underscore.js,Javascript,Backbone.js,Requirejs,Underscore.js,我有一个requirejswebapp,它加载了很多库(jsfiddle加载相当复杂)。但最重要的一点是: console.log(_.VERSION); _.template("<p>"); 我没有包含下划线的库。我不确定显示requirejs如何加载是否重要,因为最终结果是加载了正确的版本 在写这篇文章的时候,我花了相当多的时间修改了代码的所有部分,但没有任何效果 我在谷歌上搜索了一条消息“字符串不是函数”,我发现了一些引用,这意味着存在某种冲突。最可能的情况是,require
console.log(_.VERSION);
_.template("<p>");
我没有包含下划线的库。我不确定显示requirejs如何加载是否重要,因为最终结果是加载了正确的版本
在写这篇文章的时候,我花了相当多的时间修改了代码的所有部分,但没有任何效果
我在谷歌上搜索了一条消息“字符串不是函数”,我发现了一些引用,这意味着存在某种冲突。最可能的情况是,requireJS在您的模块中注入了模板的原始字符串值,您认为它注入了编译后的模板函数 您试图将其作为函数访问,这会导致
未捕获类型错误:字符串不是函数
错误
您需要将此模板字符串输入到
.template()
在我用requirejs和下划线加载的数百个视图中,这条神秘的消息就是这一行的结果
template: _.template=require("text!TemplateMapView"),
这句话被替换了
template: _.template(require("text!TemplateMapView"))
这将使用字符串重写函数。requirejs随机加载视图,每次不同的脚本(在此脚本之后直接加载)都会产生错误。这太让人困惑了。请输入更多代码。听起来像是在渲染模板(调用生成的函数)@mu这是全部代码。我在控制台中运行这个。它发生在我用requirejs加载应用程序之后。当然,它发生在应用程序的其他部分,但这是最容易复制的。代码与之类似,我只需执行var x=979;.template(“我的应用程序非常庞大,像25个AMD、非libs和许多js脚本(超过100个))。我如何在JSFIDLE中重现这个问题?我会尝试在这里找到更多的东西来展示。创建一个FIDLE,通过require只加载下划线和模板,并重现错误。你可能会同时找到答案!否决一个解决问题的答案会使网站变得更糟。如果我们有一个问题和一个答案,那么他可能是世界上所有JS程序员一生中都犯过的疯狂的打字错误,这个网站将成为巴别塔图书馆有史以来的第一个实现。我想你能做的最好的事情就是把这个问题全部删除。看到一条与打字错误无关的非常奇怪和非描述性的错误消息可能会对progra有所帮助这就是为什么我仍然保留它的原因。我不介意惩罚这个网站是够严厉的“非常奇怪和非描述性的错误信息,与它的真正原因无关。”“:这基本上是JavaScript的核心,不管怎样,我们都会喜欢它。可能的原因和不相关的错误消息的组合几乎是无限的。JL Borges是40年代看到JS出现的梦想家:-)
template: _.template(require("text!TemplateMapView"))