2016-06-07 31 views
0

在react-router的例子中,有下面的動態加載子代碼,但我想動態地計算依賴關係。但是,它似乎不工作。 forEach循環會拋出錯誤,說:"Cannot find module xxx"getChildRoutes dynamiclly

getChildRoutes(location, callback) { 
    require.ensure([], function (require) { 
     callback(null, [ 
     require('./routes/Announcements'), 
     require('./routes/Assignments') 
     ]) 
    }) 
    }, 

---- ############################### ################ ----

getChildRoutes(location, callback) { 
    require.ensure([], function (require) { 
    var appsRoutes = ['routes/Announcements', 'routes/Assignments'].forEach(item=>{ 
    return require('./' + item); 
    }); 
      callback(null, appRoutes) 
    }) 
}, 

回答

0

以下變化是否有效?

const dynamicRoutes = [ 
'./routes/Announcements', 
'./routes/Assignments' 
]; 

... 

getChildRoutes(location, callback) { 
    require.ensure(dynamicRoutes, function (require) { 
    var appsRoutes = dynamicRoutes.map(item => require(item)); 
    callback(null, appRoutes); 
    }); 
}, 

我想的WebPack需要能夠計算出哪些模塊在編譯時,它是不能夠解決在創建動態掛鉤,由於您的CONCAT forEach循環的方法。

這種替代可能可能工作太:

getChildRoutes(location, callback) { 
    require.ensure([], function (require) { 
    var appsRoutes = [ 
     require('./routes/Announcements'), 
     require('./routes/Assignments') 
    ]; 
    callback(null, appRoutes); 
    }); 
}, 

這裏閱讀更多信息:https://webpack.github.io/docs/code-splitting.html

+0

它似乎不起作用。編譯時,webpack會發出警告:「依賴項的請求是一個表達式」。運行它時,webpack會拋出錯誤「找不到模塊」 – jason

+0

對於替代選項呢? – ctrlplusb

+0

其實,appRoutes是動態計算的,就像var config = ['Annoucements','Assignments']; appRoutes = config.map(item => {return'./routes /'+ item}) – jason

相關問題