webpack 再使用变量作为require路径时,打包 Critical dependencies 警告

luoyjx · 2016-11-03 11:57 · 2292次阅读

有的小伙伴可能在开发时需要动态加载模块

常规思路,如果模块有固定的父级路径,比较好办:

var foo= require("./dir/"+somevaribale+".js");

这样即可,进行根据条件不同进行加载。

但是也有情况下,路径是完全不可预测的。

比如我们需要加载一个任意的绝对路径,我们可能会这样写。

var module_path= "/dir/"+somevariable+".js";
var foo= require(module_path);

在node后端环境,这样是没有问题的。

但是在webpack打包的时候,这样就会有警告了: Critical dependencies

这个问题,是源自webpack中的require context问题。

在github上也有相关的讨论:

我试了这种方式,发现可以,所以分享一下,但是我没有在electron环境下尝试。

// webpack.config.js

{
  module: {
    // require
    unknownContextRegExp: /$^/,
    unknownContextCritical: false,

    // require(expr)
    exprContextRegExp: /$^/,
    exprContextCritical: false,

    // require("prefix" + expr + "surfix")
    wrappedContextRegExp: /$^/,
    wrappedContextCritical: false
  }
}
收藏

暂无评论

登录后可以进行评论。没有账号?马上注册