簡體   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