我正在尝试使用require.js加载Heyoffline 我试过shim config
require.config({
paths : {
heyoffline : "libs/heyoffline"
},
shim: {
'heyoffline': {
exports: 'Heyoffline'
}
}
});
在模块文件中。
define(["heyoffline"], function (Heyoffline) {
new Heyoffline;
}
其他代表装载没有问题。
我只得到以下例外:
Uncaught TypeError: undefined is not a function
答案 0 :(得分:0)
Heyoffline不是AMD模块。我认为问题是require.js等待Heyoffline
加载。在这种情况下,在全局范围和窗口范围上定义了这种情况。 exports
属性首先找到全局值,但在define
中,您需要窗口值,该值尚未加载。
有两种可能的解决方案(未经测试,因为我没有使用过Heyoffline):
1)调整Heyoffline
尝试使用以下内容更改heyoffline.js。将window.Heyoffline
更改为window.Heyoffline2
(在文件末尾):
return window.Heyoffline2 = new Heyoffline;
相应更改垫片:
shim: {
'heyoffline': {
exports: 'Heyoffline2'
}
}
2)使用domReady插件
您可以尝试的另一种可能性是使用插件domReady。同时从函数中删除Heyoffline
参数,并使用window.Heyoffline
确保使用正确的对象:
define(["domReady!heyoffline"], function () {
new window.Heyoffline;
}