簡體   English   中英

流星1.3和RequireJS

[英]Meteor 1.3 and RequireJS

我的RequireJS 2.1.8在Meteor 1.2.1應用程序上運行良好。 具體來說,在我的Iron Router路由中,我有:

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

我升級到Meteor 1.3,但現在出現以下錯誤:“ require.config不是函數”。

進一步看,我可以看到modules-runtime包定義了自己的require變量。

我在require.config調用之前嘗試了“ require = requirejs”,這使我的require.config行運行正常,但是Meteor掛起並出現以下錯誤:

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

似乎Meteor不想在其旁邊進行“要求”重新定義。

如何使Meteor 1.3和RequireJS並存。

事實證明,在waitOn函數中,Meteor 1.3 module.js重新定義了“ require”變量。 作為一個局部變量,這是一種很好的做法,但與RequireJS將require定義為全局變量相沖突,因此使用require global的代碼將失敗。

通過兩個步驟解決了該問題:1.使用requirejs.config代替require.config 2.重寫了我的定義,其中將require內部依賴於require:

define([
    'require',
    ...
],
function (
    require,
    ...
) {
    require(...); // code that works :-)
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM