私は RequireJS を使用して、すべての JavaScript を AMD モジュールとしてロードしています。具体的には、「shim」構成を使用して AMD 以外のモジュールをロードしています。
しかし、MixPanel を読み込もうとすると、「未定義」のオブジェクトが表示されます。
関連するファイルは次のとおりです。比較のために、正常にシム処理された Stripe js を使用します。
main.js:
require.config({
paths: {
stripe: 'libs/stripe/stripe',
mp: 'libs/mixpanel/mixpanel'
},
shim: {
'stripe': {
exports: 'Stripe'
},
'mp': {
exports: 'MP'
}
}
});
libs/stripe/stripe.js
ドキュメントが推奨するように、libs/mixpanel/mixpanel.js
両方とも(function () {})();
呼び出しがあります。
my payment.js (Stripe をラップ):
define(['jquery', 'stripe'], function ($, Stripe) {
var key = "MY_KEY";
Stripe.setPublishableKey(key);
});
my track.js (MixPanel をラップします):
define(['jquery', 'mp'], function ($, MP) {
var token = "MY_TOKEN";
MP.init(token);
});