如何使用Require.js加载Heyoffline.js

时间:2013-01-01 14:23:02

标签: javascript requirejs js-amd

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

1 个答案:

答案 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;
}