2016-03-29 18 views
2

私はMeteor 1.2.1アプリケーションでRequireJS 2.1.8を正常に動作させました。具体的には、私のアイアンルータールートに私が持っていた:Meteor 1.3とRequireJS

waitOn: function() { 
    return IRLibLoader.load(requireUrl, { 
     success: function() { 
      require.config({ 
       baseUrl: 'http://...' // real URL here 
      }); 
     } 
    }); 
} 

私は1.3を流星にアップグレードが、今、私は次のエラーを持っている:「require.configは関数ではありません」。

さらに見ると、modules-runtimeパッケージには独自のrequire変数が定義されています。

私は右の私のrequire.configラインが正常に動作せrequire.config呼び出し、前に「= requirejsを要求」が、その後流星は、次のエラーでハングアップしてみました:

Exception from Tracker afterFlush function: 
meteor.js?hash=ec96c6f…:913 TypeError: id.charAt is not a function 
    at fileResolve (modules-runtime.js?hash=939c79d…:288) 
    at require (modules-runtime.js?hash=939c79d…:90) 
    at .<anonymous> (index.js:6) 
    at blaze.js?hash=38069f4…:3331 
    at Function.Template._withTemplateInstanceFunc (blaze.js?hash=38069f4…:3677) 
    at fireCallbacks (blaze.js?hash=38069f4…:3327) 
    at .<anonymous> (blaze.js?hash=38069f4…:3420) 
    at blaze.js?hash=38069f4…:1773 
    at Object.Blaze._withCurrentView (blaze.js?hash=38069f4…:2204) 
    at blaze.js?hash=38069f4…:1772 

は流星doesnのように思えますその側に「必要な」再定義が必要なのです。

Meteor 1.3とRequireJSをうまく共存させるにはどうすればいいですか?

答えて

0

waitOn関数の中で、Meteor 1.3 module.jsが "require"変数を再定義したことが分かります。ローカル変数としては、良い習慣ですが、RequireJSを定義することと矛盾してグローバルとして必要なので、requireグローバルを使用するコードは失敗します。

は、2つのステップでそれを解決:代わりにrequire.config 2の 1.使用しrequirejs.configは依存が必要としてそれらの内側に必要使用私の定義を書き直し:

define([ 
    'require', 
    ... 
], 
function (
    require, 
    ... 
) { 
    require(...); // code that works :-) 
}); 
関連する問題