【发布时间】:2013-11-19 15:49:32
【问题描述】:
我的 index.html 文件顶部和 main.js 中包含了modernizr / pollyfiller:
require.config({
paths : {
'jquery' : 'lib/jquery-1.10.2.min',
'jqdate' : 'lib/jquery.dateFormat-1.0',
'webshims' : 'lib/polyfiller'
},
shim : {
'lib/underscore' : {
exports : '_'
},
'lib/backbone' : {
deps : ["lib/underscore", "jquery"],
exports : 'Backbone'
},
"modernizr" : {
deps : ["jquery"],
exports : "modernizr"
},
"webshims" : {
deps : [ "jquery", "lib/modernizr-custom"],
exports: "webshims"
}
}
});
var router, vent;
require(["jquery", "lib/underscore", "lib/backbone", "app", "lib/modernizr-custom", "webshims"], function($, _, Backbone, Router, modernizr, webshims) {
$(function() {
$.webshims.setOptions('forms forms-ext', {
replaceUI : false,
waitReady : false
});
$.webshims.polyfill('forms forms-ext');
router = new Router();
vent = _.extend({}, Backbone.Events);
$.expr.cacheLength = 1;
Backbone.history.start({
});
});
});
这通常会加载正常,但是,有时看起来 webshims 在我尝试调用时没有定义:
$.webshims.setOptions('forms forms-ext', {
replaceUI : false,
waitReady : false
});
$.webshims.polyfill('forms forms-ext');
我得到错误:TypeError: $.webshims is undefined
有没有更好的加载方式?
编辑 所以,我像你说的那样更新了脚本,并且必须在路径和 shim 定义中大写 Webshims。它加载正常,但现在我收到一个错误:
Uncaught SyntaxError: Unexpected token <
在 Chrome 和
中SyntaxError: syntax error
<!DOCTYPE html>
在火狐中
【问题讨论】:
-
我不清楚为什么你必须大写 webshim。此外,您已编辑问题以显示更改,但
require调用仍以小写形式在需求数组中显示 webshim。您现在报告的错误看起来像是试图将 HTML 文件加载为 JS 代码。我不清楚这是否与您遇到的 RequireJS 问题有关,或者 问题已经解决,现在您遇到了 another 问题。 -
使用小写 webshims 时,会发生以下情况:错误:模块加载超时:lib/polyfiller requirejs.org/docs/errors.html#timeout
-
我建议使用您可以使用的任何调试工具来检查从浏览器到服务器的网络查询。这就是我一直解决超时问题的方法。
-
我已更新以反映您的建议。我正在使用本地主机并查看 polyfiller.js 加载。但它仍然超时。
-
polyfiller.js 是否真的包含 JS 代码?它是否设置了一个名为
webshims的全局变量?如果不是,那可能是您的问题的根源。
标签: backbone.js requirejs modernizr webshim