繁体   English   中英

requirejs看不到jquery

[英]requirejs can't see jquery

我有一个使用requirejs的最简单的项目。 数据主文件是js / default.js

在此输入图像描述

你可以看到两个jQuery文件。 RequireJS只能看到与default.js位于同一级别的那个,所以这段代码:

require(
    ['jquery', 'modules/module1', 'modules/module2'],
    function($, Module1, Module2){
        $('body')
            .append(Module1.phrase)
            .append('<hr/>')
            .append(Module2.ask);
    }
);

...作品

但是,如果我将['jquery',...更改为['libs / jquery',... ,则会显示错误:

Uncaught TypeError: $ is not a function

这有什么不对? 整个代码在这里: http//plnkr.co/edit/QuFsKN597RD873MOlUw8?p = preview

jQuery必须确实需要作为jquery

现在,模块名称可能仍然存在混淆。 有人可以看的依赖libs/jquery和推断jQuery 在需要作为事实上jquery 也就是说,执行require(['libs/jquery'], ...会要求RequireJS加载位于libs/的模块jquery 。但是, 情况并非如此 。所需模块的模块名称是整个在依赖列表中列出的名称 。所以在上面的require调用中,所需模块的模块名称是libs/jquery 。但jQuery调用define('jquery', ...将自己声明为RequireJS。模块名称(第一个)参数是jquery ,而不是libs/jquery ,因此RequireJS无法找到所请求的模块。

一个简单的解决方法是添加paths配置:

paths: {
    jquery: 'libs/jquery'
}

请查看requirejs文档:

jQuery在检测到AMD / RequireJS时定义了命名的AMD模块'jquery'(全部小写)。 为了减少混淆,我们建议在requirejs.config中使用'jquery'作为模块名称。

http://requirejs.org/docs/jquery.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM