require引入jquery依赖时,gulp插件amd-optimize总是出错?

require引入jquery依赖时,gulp插件amd-optimize总是出错?


events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: No file for module 'jquery' found.
    at c:\home\home\jia-ui\node_modules\amd-optimize\lib\trace.js:145:29
    at fn (c:\home\home\jia-ui\node_modules\amd-optimize\node_modules\async\lib\async.js:582:34)
    at Immediate._onImmediate (c:\home\home\jia-ui\node_modules\amd-optimize\node_modules\async\lib\async.js:498:34)
    at processImmediate [as _immediateCallback] (timers.js:383:17)

主入口js:

requirejs.config({
    baseUrl:"/",
    paths:{
        "jquery":'./../../../node_modules/jquery/jquery'
    }
});

require(['jquery'],function($){
  console.log("jquery")
});

gulpfile.js

gulp.task("js", function () {
    return gulp.src("./src/assets/js/*.js")
        .pipe(amdOptimize("common")
        )
        .pipe(concat("common.js"))
        .pipe(gulp.dest("./dist/js/"));

});

html

<script data-main="src/assets/js/common" src="/dist/js/require.js"></script>
阅读 4.5k
1 个回答

官方文档有介绍怎么把jQuery这种库文件封装成依赖,可以参考以下配置:
`require.config({

        baseUrl: 'app/',
        paths: {
            'jQuery': 'vender/jquery/dist/jquery',
            'underscore': 'vender/underscore/underscore',
            'Backbone': 'vender/backbone/backbone',
            'text': 'vender/text/text',
            'bootstrap': 'vender/bootstrap/dist/js/bootstrap'
        },
        shim: {
            'jQuery': {
                exports: '$'
            },
            'underscore': {
                exports: '_'
            },
            'Backbone': {
                deps: ['jQuery', 'underscore'],
                exports: 'Backbone'
            },
            'bootstrap': {
                deps: ['jQuery']
            }
        }
    });`

通过shim形成依赖之后,就可以简单的引用了
define(['Backbone'], function(Backbone){})
注意,backbone已经依赖于jQuery,所以加载backbone首先会去加载jQuery,直接在回调函数中使用$就行。
以上官方文档都有提到,建议仔细看一下官方文档

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题