Webpack动态需要抛出错误

时间:2017-11-20 11:28:10

标签: javascript webpack-2 commonjs

我有以下一段效果很好的代码:

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

有什么方法可以使用变量来满足要求吗?

2 个答案:

答案 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回答可以提供帮助。