代码之家  ›  专栏  ›  技术社区  ›  Pete Irfan TahirKheli

网页包动态要求引发错误

  •  1
  • Pete Irfan TahirKheli  · 技术社区  · 7 年前

    我有以下代码可以很好地工作:

    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
    });
    

    它引发以下错误:

    未捕获(承诺中)错误:找不到模块“”在WebPackageMissingModule

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

    2 回复  |  直到 7 年前
        1
  •  3
  •   Matias Cicero    7 年前

    看看网页包 Context Module .

    显然,当您尝试动态地需要一个模块时,Webpack将尝试将输入表达式解析为 context .

    请尝试以下代码( 还没有测试过这个 ):

    const ajaxJs = './sample-form.js';
    core = require.context('./core', true, /^\.\/.*\.js$/);
    require.ensure([], () => {
        core(ajaxJs);
    });
    
        2
  •  0
  •   Ajay Gaur    7 年前

    当名称为动态变量时,Webpack无法确定要绑定哪些模块。在中不能使用变量名 require . 你必须做以下事情:

    require.ensure(['./core/sample-form.js'], require => {
        require('./core/sample-form.js');  // eslint-disable-line import/no-dynamic-require
    });
    

    This 答案会有所帮助。