2016-12-01 9 views
0

Мне нужно динамически модулировать модули для асинхронной загрузки с помощью webpack. Моя цель - перебрать массив и загрузить эти модули (это для моих целей-ретрансляторов, что не важно здесь).Webpack require.ensure с динамическим строковым путем

Это мой код:

const arr = ['some-module', 'module-2']; 
arr.map(moduleName => { 
    require.ensure([], require => { 
    if(process.env.IS_BROWSER) { //for react server-render because of babel 6 
     cb(null, require(moduleName)); 
    } 
    else { 
     cb(null, require(moduleName).default); 
    } 
    }); 
} 

Он хорошо работает на сервере, но и на внешнем интерфейсе, то дополнительные пучки не производятся и загружены. Вы знаете, как его решить? Спасибо.

ответ

0

Как вам известно, Webpack является статическим модульным модулем, все модули должны быть разрешены статически. Он не поддерживает разрешение выражений активов, которые полностью динамичны.

Это может решить некоторые динамические выражения статически что-то вроде

var a = 'a'; 
require.ensure([], function (require) { 
    // all dynamic entry modules inside /dynamic/ folder 
    console.log(require('./dynamic/' + a)); 
}); 

Если вы хотите создать один кусок для каждого модуля, вы можете использовать require.context в сочетании с расслоением погрузчиком.

var a = './a'; 
require.context('bundle!./app')(a)(function(moduleTest){ 
    console.log(moduleTest); 
}); 

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

  • Нет связанных вопросов^_^