requirejs优化器无法在jquery中加载

时间:2012-06-17 03:03:27

标签: javascript jquery node.js requirejs

我正在使用backbone和jquerymobile优化我的requirejs应用程序,以下是我的文件结构:

/application
    /app
       /models
       /views
       /collections
    /scripts
       main.js
       text.js
       /assets
            backbone.js
       /libs
            /jquery
                /jquery.js
                /jquery-mobile.js
 app.js
 r.js
/public
    /css
        /style.css

在控制台中,我尝试运行到ff命令:

node ../r.js -o name=main out=../build.js baseUrl=. paths.models=../app/models paths.app=../app

我确保路径定义良好且正常工作,除非出现此错误(这是我在运行命令时得到的):

Tracing dependencies for: main
Error: Module loading did not complete for: jquery
    at Function.traceDependencies (/home/dunhak/public_html/my_path/etc/application/r.js:15117:19)

非常感谢你!

1 个答案:

答案 0 :(得分:4)

其中一些将取决于您加载脚本的顺序。 jQuery是在require.js之前加载还是相反?

jQuery的最后几行可能为解决方案提供了线索:

if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
    define( "jquery", [], function () { return jQuery; } );
}

我的猜测是你正在做的事情:

var $ = require('jquery'); //lower-case Q
个人而言,我一直在做:

var $ = require('jQuery'); //upper-case Q

这一切都可能取决于你的require.config - 我用的是:

require.config({
    baseUrl: "/js",

    paths : {
        jQuery: 'lib/jquery-1.7.1.min'
        //, etc...
    }
})

需要考虑的另一件事:您可能不希望将jQuery作为优化输出的一部分包含在内 - 而是从CDN(等)加载预先缩小的版本。在这种情况下,您需要按照此处所述排除jquery模块:http://requirejs.org/docs/jquery.html

modules: [
    {
        name: "main",
        exclude: ["jquery"]
    }
]