繁体   English   中英

Node.js惰性需求模块

[英]Node.js lazy require module

我正在写一个懒惰的模块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 = requirez('expo')
  */
export default function requirez(name) {
    return lazy[name]
}

奇怪的是,当我运行它时,我得到:

找不到模块“。”

console.log语句记录:

懒惰的要求{target: {…}, name: "./Linking"}

因此require(name)应该被调用为: require("./Linking")

错误所指示的不如require(".")

找到了相关的错误报告:

https://github.com/webpack/webpack/issues/4921

由于节点require树解析度是静态评估/分析的,因此webpack假定这样做,因此无法进行动态解析。

另外,在浏览器上,Webpack必须在运行浏览器之前先翻译所需的包,这样动态惰性需求就无法在编译后运行。 您将缺少该必需模块的转译源。

我尝试使用import()但它也有错误:

https://github.com/webpack/webpack/issues/4292#issuecomment-280165950

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM