【发布时间】:2025-05-19 00:50:02
【问题描述】:
我正在尝试将hammer.js 插件与require.js 一起使用,但我没有运气。
这是我的代码:
requirejs.config({
paths: {
"jquery": ('__proto__' in {}) ? "lib/zepto" : "lib/jquery",
"hammer-jquery": "lib/jquery.hammer",
"hammer-showtouches": "lib/hammer.showtouches",
"hammer-fakemultitouch": "lib/hammer.fakemultitouch"
},
shim: {
"jquery": {
exports: "$"
},
"hammer-showtouches": {
deps: [ "hammer-jquery" ],
exports: "Hammer.plugins.showTouches"
},
"hammer-fakemultitouch": {
deps: [ "hammer-jquery" ],
exports: "Hammer.plugins.fakeMultitouch"
}
},
waitSeconds: 30
});
requirejs(["jquery","hammer-jquery","hammer-showtouches","hammer-fakemultitouch"], function ($,Hammer) {
$(function(){
if(!Hammer.HAS_TOUCHEVENTS && !Hammer.HAS_POINTEREVENTS) {
Hammer.plugins.showTouches();
Hammer.plugins.fakeMultitouch();
}
});
});
这是错误:
未捕获的类型错误:无法读取未定义的hammer.showtouches.js:7 的属性“插件”
Uncaught TypeError: Cannot read property 'plugins' of undefined require.js:8
未捕获的类型错误:无法读取未定义的hammer.fakemultitouch.js:7 的属性“插件”
Uncaught TypeError: Cannot read property 'plugins' of undefined require.js:8
我尝试在 shim 配置中包含 Hammer,但没有成功(没有必要,因为最新版本的 jquery.hammer 与 AMD 兼容)。
【问题讨论】: