2016-06-07 2 views
0

В примерах с адаптивным маршрутизатором есть следующий код для динамических загрузок, но я хочу динамически вычислять зависимости. Однако, похоже, это не работает. 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 должен быть в состоянии вычислить, какие модули для создания динамических крюков на во время компиляции, что он не в состоянии решить в связи с вашим подходом петли Foreach Concat.

Эта альтернатива могла бы работать тоже:

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

Смежные вопросы