webpack 再使用变量作为 require 路径时,打包 Critical dependencies 警告
· 阅读需 3 分钟
有的小伙伴可能在开发时需要动态加载模块
常规思路,如果模块有固定的父级路径,比较好办:
var foo = require("./dir/"+somevaribale+".js");
这样即可,进行根据条件不同进行加载。
但是也有情况下,路径是完全不可预测的。
比如我们需要加载一个任意的绝对路径,我们可能会这样写。
var module_path= "/dir/"+somevariable+".js";
var foo= require(module_path);
在 node 后端环境,这样是没有问题的。
但是在 webpack 打包的时候 ,这样就会有警告了:
这个问题,是源自 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
}
}