我最近开始了一个Javascript项目,现在我将它移到require.js。到目前为止,除了spin.js库之外,一切都运行良好。当我尝试访问spin.js相关的任何内容时,我收到以下错误消息:
未捕获的ReferenceError:未定义Spinner
我的requirejs.config
看起来像这样:
requirejs.config({
baseUrl: 'js',
paths: {
'jquery': 'lib/jquery',
'spin': 'lib/spin',
},
shim: {
'jquery' : {
deps: [],
},
'spin' : {
deps: [],
exports: 'Spinner'
},
}
});
示例模块如下所示:
require(['spin'],
function(Spinner)
{
new Spinner();
}
);
我正在使用shim config
因为我有一些其他依赖项的模块。其他一切似乎都很好。我在这里缺少什么?
亚历克斯指出我的图书馆包含错误。对于每个遇到麻烦而理解backbone.js和require.js的人,我建议this book,特别是有关模块化开发的章节。
答案 0 :(得分:3)
旋转库不应该在配置中填充。来自spin.js源代码:
if (typeof define == 'function' && define.amd)
define(function() { return Spinner })
else
window.Spinner = Spinner
它已经在最后被定义为一个模块,而window.Spinner不是作为一个窗口对象创建的(这就是它不应该被填充的原因)
答案 1 :(得分:1)
我有类似的情况。我没有添加垫片但忽略了在Backbone之后将Spinner添加到函数中导致它未定义。
define([
'jquery',
'underscore',
'backbone',
'spin'
],
function($, _, Backbone, Spinner) {
var SpinnerView = Backbone.View.extend({
initialize: function() {
this.loadingAnimation();
},