require.config({
paths: {
jquery: 'libs/jquery',
underscore: 'libs/underscore',
}
});
define([
'jquery',
'underscore',
], function($,_){
var test = _.template("hello: <%= name %>",{name:"warren"});
});
给定上面的代码使用requirejs加载jquery和下划线,为什么我会收到此错误...
Uncaught TypeError: Cannot call method 'template' of null
所有JS似乎都在加载...错误指向_.template行。这真让我抓狂...
最佳答案
您确定已捆绑了下划线库以供requireJS使用吗?
当你写:
define([
'jquery',
'underscore',
], function($,_){
var test = _.template("hello: <%= name %>",{name:"warren"});
});
'_'变量(回调函数的第二个参数)分配有下划线库的导出(指定了第二个依赖项)。
我猜您使用的是下划线的原始版本,该版本不是requireJS的软件包。
在您的underscore.js文件中,在开头添加以下行:
define(function () {
最后一行:
return _;});
因此,导出配置良好。
另一种可能的解决方案是使用全局'_'变量:您需要做的就是删除回调的第二个参数。
define([
'jquery',
'underscore',
], function(){
var test = _.template("hello: <%= name %>",{name:"warren"});
});
从那里,您的浏览器将使用'_'全局变量,该变量在下划线中定义,并在调用回调时设置。
jQuery具有相同的行为。
关于underscore.js - Underscore.js未捕获的TypeError:无法调用null的方法"template",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10547234/