首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何集成mixpanel和requirejs?

如何集成mixpanel和requirejs?
EN

Stack Overflow用户
提问于 2013-02-26 05:06:16
回答 2查看 1.1K关注 0票数 0

我正在使用RequireJS加载我所有的javascript作为AMD模块。具体地说,我使用"shim“配置来加载非AMD模块。

但是当我试图加载MixPanel时,我得到了一个“未定义”的对象。

下面是相关的文件,与我的成功填充的条纹js进行比较。

main.js:

代码语言:javascript
复制
require.config({
    paths: {
        stripe: 'libs/stripe/stripe',
        mp: 'libs/mixpanel/mixpanel'
    },
    shim: {
        'stripe': {
            exports: 'Stripe'
        },
        'mp': {
            exports: 'MP'
        }
    }
 });

正如文档所建议的那样,libs/stripe/stripe.jslibs/mixpanel/mixpanel.js都有(function () {})();调用。

我的payment.js (包装条纹):

代码语言:javascript
复制
define(['jquery', 'stripe'], function ($, Stripe) {
    var key = "MY_KEY";
    Stripe.setPublishableKey(key);
});

my track.js (包装MixPanel):

代码语言:javascript
复制
define(['jquery', 'mp'], function ($, MP) {
    var token = "MY_TOKEN";
    MP.init(token);
});
EN

回答 2

Stack Overflow用户

发布于 2014-01-11 07:49:15

我发现您在libs/mixpanel/mixpanel.js中使用的mix面板片段添加了一个异步<script>标记,该标记可下载完整的mixpanel库。由于RequireJS阻止将mixpanel变量附加到窗口,因此它永远不会更新。

我仍然在试图弄清楚如何让它工作,如果我弄清楚了,我会编辑这个答案。

编辑:

我发现mixpanel希望能够重新分配window.mixpanel。因此,在您的情况下,您可以这样做:

代码语言:javascript
复制
define(['mixpanel'], function (MP) {
    window.mixpanel = MP;
    window.mixpanel.init('TOKEN');
    ...
});

然后,mixpanel的处理程序应该使用window.mixpanel,因为这将是真正的实例。

票数 2
EN

Stack Overflow用户

发布于 2013-03-01 06:38:48

我对shim不熟悉,但看起来你应该

代码语言:javascript
复制
'mp': {
    exports: 'mixpanel'
}

因为Mixpanel库公开了这一点,而不是window.MP

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15076489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档