我有以下一段效果很好的代码:
require.ensure(['./core/sample-form.js'], require => {
require('./core/sample-form.js');
});
现在,如果我将该字符串放入变量:
const ajaxJs = './core/sample-form.js';
require.ensure([ajaxJs], require => {
require(ajaxJs); // eslint-disable-line import/no-dynamic-require
});
它会抛出以下错误:
未捕获(承诺)错误:找不到模块"。"在webpackMissingModule
有什么方法可以使用变量来满足要求吗?
答案 0 :(得分:3)
看看Webpack的Context Module。
显然,当您尝试动态地需要模块时,Webpack将尝试将输入表达式解析为context
。
请尝试以下代码( 尚未对此进行测试 ):
const ajaxJs = './sample-form.js';
core = require.context('./core', true, /^\.\/.*\.js$/);
require.ensure([], () => {
core(ajaxJs);
});
答案 1 :(得分:0)
当名称是动态变量时,Webpack无法确定要捆绑的模块。您无法在require
中使用变量名称。你必须做类似的事情:
require.ensure(['./core/sample-form.js'], require => {
require('./core/sample-form.js'); // eslint-disable-line import/no-dynamic-require
});
This回答可以提供帮助。