[英]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'作为模块名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.