加载带有下划线的模板会出错

Loading templates with underscore gives error

我有一个 requirejs webapp,它加载了很多库(jsfiddle 加载相当复杂)。最重要的是:

console.log(_.VERSION);
_.template("<p>");

在带有开发控制台的 underscorejs 站点中,这导致:1.7.0 和第二行 returns 一个函数。

加载后在我的站点中

报告的版本相同。 第二行是 Uncaught TypeError: string is not a function

当我尝试在 BackBone 视图

中加载模板时,这会产生问题

堆栈跟踪:

(anonymous function)VM2739:762 InjectedScript._evaluateOnVM2739:695 InjectedScript._evaluateAndWrapVM2739:609 InjectedScript.evaluate

我没有包含下划线的库。我不确定显示 requirejs 的加载方式是否重要 _ 因为最终结果是加载了正确的版本..?

在撰写本文时,我已经花费了大量时间更改代码的所有部分,但没有任何效果。

我收到 google 消息 "string is not a function" 并且我发现一些参考资料表明存在某种冲突。

最有可能的是,requireJS 正在将模板的 原始字符串值 注入到您的模块中,而您认为它正在注入已编译的模板函数。

您试图将此作为 函数 访问,这会导致 Uncaught TypeError: string is not a function 错误。

您需要将此模板字符串输入 _.template()

在我使用 requirejs 和下划线加载的所有数百个视图中,这条神秘的消息是这一行的结果

template: _.template=require("text!TemplateMapView"),

已替换为此行..

template: _.template(require("text!TemplateMapView"))

这用字符串覆盖了函数。 requirejs 随机加载视图,每次不同的脚本(直接在此之后加载)都会产生错误。那是非常混乱的。