[英]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.