Node.js延迟请求模块
我正在编写一个惰性模块require()或importNode.js延迟请求模块,node.js,module,lazy-loading,require,Node.js,Module,Lazy Loading,Require,我正在编写一个惰性模块require()或import const lazy = new Proxy({}, { get: function (target, name) { console.log('lazy require', { target, name }) return require(name) } } ) /** * @param {string} Module Name * @example const expo = r
const lazy = new Proxy({},
{
get: function (target, name) {
console.log('lazy require', { target, name })
return require(name)
}
}
)
/**
* @param {string} Module Name
* @example const expo = requirez('expo')
*/
export default function requirez(name) {
return lazy[name]
}
奇怪的是,当我运行它时,我得到:
找不到模块“”
console.log语句记录:
惰性要求{target:{…},名称:“./Linking”}
所以require(name)
应该被称为:require(“./链接”)
而不是错误指示的
要求(“.”
找到相关的错误报告:
由于节点<代码>要求代码>树解析是静态评估/分析的,而webpack认为这在动态解析上是失败的
此外,在浏览器上,Web包必须在浏览器中运行之前传输所需的捆绑包,因此传输后无法运行dynamic lazy requires。您将丢失所需模块的传输源
我尝试过使用import()
,但它也有错误: