0

我正在尝试在我的应用程序中使用 inview 插件,该插件使用 RequireJS 加载脚本并正在使用 Almond 构建/优化。我收到控制台错误:

TypeError: 'undefined' is not an object (evaluating 'global.jquery.inview')

这似乎来自需要添加到 inview 文件末尾的垫片:

define("jquery.inview", ["jquery"], (function (global) {
    return function () {
        var ret, fn;
        return ret || global.jquery.inview;
    };
}(this)));

我的要求配置如下:

require.config({
    paths: {
        'jquery': '../../bower_components/jquery/dist/jquery',
        'text': '../../bower_components/requirejs-text/text',
        'tweenmax': '../../bower_components/greensock/src/uncompressed/TweenMax',
        'jquery.inview': '../../bower_components/jquery.inview/jquery.inview'
    },
    shim: {
        "jquery.inview": {
            deps: ['jquery'],
            exports: 'jquery.inview'
        }
    }
});

非常感谢任何帮助!

4

1 回答 1

1

jquery.inview是一个 jQuery 插件。因此,它通过修改$. 当您告诉 RequireJS 它导出jquery.inviewRequireJS 尝试jquery.inview在全局空间中解析时,这不起作用,因为 jQuery 在全局空间中可以作为$or访问jQuery,而不是 as jquery

您可以将其exports排除在外或将其设置为jquery.inview确实定义的内容。例如,阅读jquery.inview我看到它设置 的代码,$.event.special.inview因此您可以在exports.

如果您想知道,对于 jQuery 插件,该exports值仅对 RequireJS 的簿记有用。您自己不是通过它导出的值访问插件,而是通过它通过 jQuery 公开的 API。

于 2014-08-27T10:36:46.250 回答