0

我正在尝试使用 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 
4

1 回答 1

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;
}
于 2013-01-01T15:14:03.427 回答