日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

一個提出五年的 Node.js 模塊問題,終被解決!

來源: 責編: 時間:2024-03-26 17:40:02 235觀看
導讀一直以來 Node.js 中存在一個問題,CommonJS 與 ES Modules 如何更好的共存? 是令大多數 Node.js 開發者頭疼的問題。問題當在 ES Modules 模塊中引入 CommonJS 模塊代碼,一切是 Ok 的。如下代碼所示:// c.jsmodule.export

一直以來 Node.js 中存在一個問題,CommonJS 與 ES Modules 如何更好的共存? 是令大多數 Node.js 開發者頭疼的問題。mPT28資訊網——每日最新資訊28at.com

問題

當在 ES Modules 模塊中引入 CommonJS 模塊代碼,一切是 Ok 的。如下代碼所示:mPT28資訊網——每日最新資訊28at.com

// c.jsmodule.exports = {  moduleName: 'a'}
// m.mjsimport C_Module from './c.js'console.log(C_Module); // { moduleName: 'a' }

換一種方式,讓 CommonJS 引入 ES Modules,如下代碼所示:mPT28資訊網——每日最新資訊28at.com

// m.mjsexport default 'm'
// c.jsconst M_Module = require('./m.mjs')console.log(M_Module);

終端運行 node c.js,會得到如下提示mPT28資訊網——每日最新資訊28at.com

圖片圖片mPT28資訊網——每日最新資訊28at.com

ERR_REQUIRE_ESM 這個錯誤太熟悉不過了,它困惑了很多的 Node.js 開發者,為什么換個順序就不行?mPT28資訊網——每日最新資訊28at.com

看到的很多答案是這樣的 “不支持使用 require 加載 ES 模塊,因為 ES 模塊是異步執行的”,后面大家就默認了 “CommonJS 是同步,ES Modules 是異步” 這樣的一個規則。mPT28資訊網——每日最新資訊28at.com

2019 提出后很遺憾未能繼續推進

CommonJS 模塊如何加載 ES Modules 模塊,這個問題 2019 年就已經提出,參考 “Support requiring .mjs files” https://github.com/nodejs/node/pull/30891 這個問題在當時沒有被解決。mPT28資訊網——每日最新資訊28at.com

圖片圖片mPT28資訊網——每日最新資訊28at.com

ES Modules 在文件頂層可以使用 Top-Level Await,該方法看之前的介紹,是在使用 esm 加載器加載的 .mjs 文件上使用 require 的功能時,使用了與 esm Top-Level Await 相同的權衡。mPT28資訊網——每日最新資訊28at.com

這意味著:如果可能,所有執行和評估都是同步進行的,通過立即展開執行的組件承諾。這意味著任何現有的代碼都不應該有可觀察到的行為變化,因為到目前為止還不存在任何異步模塊。問題在于,一旦使用需要異步執行的模塊,它必須讓出事件循環來執行該操作,這反過來又允許其他代碼在異步操作之后的繼續執行之前執行,這對于現在變成了異步模塊的調用者是可觀察到的。如果這對你的調用者很重要,那么意味著將你的模塊執行異步化可能被視為庫的破壞性更改,但實際上,對于大多數調用者來說,這并不重要。而且,由于當前的生態系統,零個模塊是異步執行的,因此在有異步執行的模塊之前,這種方法沒有任何缺點,因為沒有執行會改變人們今天所期望的(當然,除了不再錯誤地要求("./foo.mjs"))。mPT28資訊網——每日最新資訊28at.com

最后,問題被關閉了,原因是 “因為純粹從技術角度來看,目前嘗試在事件循環已經運行時旋轉它是行不通的”。mPT28資訊網——每日最新資訊28at.com

圖片圖片mPT28資訊網——每日最新資訊28at.com

問題是挺錯綜復雜的,感興趣的可以去看看 2019 年提出的這個 Issue。mPT28資訊網——每日最新資訊28at.com

2024 由 Joyee Cheung's 提出解決方案

2019 ~ 2024 這一令大多數開發者頭疼的問題,由 Node.js 的維護者成員 “Joyee Cheung” 再次提出了解決方案。參考 Issue “module: support require()ing synchronous ESM graphs” https://github.com/nodejs/node/pull/51977mPT28資訊網——每日最新資訊28at.com

圖片圖片mPT28資訊網——每日最新資訊28at.com

參考 Joyee Cheung 博客的介紹 https://joyeecheung.github.io/blog/2024/03/18/require-esm-in-node-js/mPT28資訊網——每日最新資訊28at.com

圖片圖片mPT28資訊網——每日最新資訊28at.com

去年年底左右,Joyee Cheung 發現了 ESM 的求值可以基于語法同步,而只是 Node.js 將異步性扔到加載過程中后,便與 @GeoffreyBooth 開始討論重新啟動同步 require(esm)。mPT28資訊網——每日最新資訊28at.com

因此,才有了這個 PR。與 2019 年的 PR 相比主要區別在于它試圖將 require(esm) 的范圍保持小型,并且僅支持加載同步 ESM。mPT28資訊網——每日最新資訊28at.com

后續會通過 --experimental-require-module 標志啟用,則加載的 ECMAScript 模塊 require() 時要滿足以下要求:mPT28資訊網——每日最新資訊28at.com

  • 在最接近的 package.json 文件或 .mjs 擴展中明確標記為 ES 模塊,具有 "type": "module" 字段
  • 完全同步(不包含 Top-Level Await)

有網友就在下面問了,這能向后移至到 Node.js 18? 大家還是很喜歡這個功能的!Node.js v20 可能還有希望,這要取決于 Node.js 的發布團隊,期待下個 Node.js 版本!mPT28資訊網——每日最新資訊28at.com

圖片圖片mPT28資訊網——每日最新資訊28at.com

這一問題的解決對 Node.js 模塊來講是里程碑式的,很敬佩 Joyee Cheung 的才華!mPT28資訊網——每日最新資訊28at.com

參考

  • https://github.com/nodejs/node/pull/30891
  • https://github.com/nodejs/node/pull/51977
  • https://joyeecheung.github.io/blog/2024/03/18/require-esm-in-node-js/

本文鏈接:http://m.www897cc.com/showinfo-26-79450-0.html一個提出五年的 Node.js 模塊問題,終被解決!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 我們一起聊聊如何向文本添加漸變效果和圖案

下一篇: 你還在用Mybatis?試試這款神器,縱享絲滑

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
先锋影音国产一区| 国产视频在线观看一区二区| 欧美一区二区三区在线| 欧美一区国产二区| 麻豆av福利av久久av| 久久久国产成人精品| 蜜桃av综合| 一区二区冒白浆视频| 亚洲综合色婷婷| 久久午夜羞羞影院免费观看| 欧美欧美午夜aⅴ在线观看| 国产精品国产三级国产普通话蜜臀| 国产伦精品一区二区三区视频黑人 | 国产欧美日本一区视频| 一区在线播放视频| 艳女tv在线观看国产一区| 午夜精品久久久久99热蜜桃导演| 久久久www| 欧美日韩亚洲高清一区二区| 国产亚洲午夜高清国产拍精品| 亚洲国产成人av在线| 亚洲午夜电影网| 久久综合给合久久狠狠色 | 欧美91视频| 国产精品一卡二卡| 91久久在线| 欧美有码在线观看视频| 欧美日本一区二区三区 | 亚洲网站视频| 久久在线播放| 国产精品日韩一区二区三区| 亚洲人成网站色ww在线| 欧美一区永久视频免费观看| 欧美母乳在线| 永久免费精品影视网站| 亚洲欧美一级二级三级| 欧美久久综合| 在线观看成人av电影| 亚洲自拍偷拍福利| 欧美日韩八区| 在线日韩欧美视频| 欧美一区二区在线播放| 欧美午夜不卡视频| 亚洲黄一区二区三区| 久久精品一区二区三区不卡牛牛| 国产精品扒开腿做爽爽爽视频| 亚洲高清视频在线观看| 欧美一区二区三区婷婷月色| 欧美三级乱人伦电影| 最新日韩欧美| 久久综合影音| 国产亚洲aⅴaaaaaa毛片| 亚洲一区在线免费观看| 欧美日韩高清在线| 亚洲国产欧美不卡在线观看| 久久久久久久久久码影片| 国产区欧美区日韩区| 亚洲午夜精品一区二区| 欧美精品久久99| 欧美成人免费全部观看天天性色| 国产精品美女诱惑| 一本色道久久综合亚洲91| 欧美暴力喷水在线| 国产一级一区二区| 午夜精品一区二区在线观看| 欧美婷婷六月丁香综合色| 亚洲精品久久久久久久久久久久久| 久久亚洲捆绑美女| 国模一区二区三区| 欧美在线不卡视频| 国产欧美日韩免费看aⅴ视频| 亚洲性线免费观看视频成熟| 欧美三级日韩三级国产三级| 一卡二卡3卡四卡高清精品视频| 欧美风情在线观看| 伊人久久久大香线蕉综合直播| 久久久亚洲影院你懂的| 韩国av一区二区三区| 久久国内精品视频| 国产一区二区三区精品久久久| 欧美在线高清| 国产亚洲欧美日韩日本| 久久精品91| 国内外成人免费激情在线视频| 久久精品主播| 在线观看亚洲一区| 亚洲欧美日韩中文视频| 国产精品久久久久久久久果冻传媒| 亚洲天天影视| 国产精品日韩一区二区| 午夜视频在线观看一区二区| 国产视频久久久久| 欧美一区二区三区四区在线观看地址| 国产欧美日韩一区二区三区在线 | 一色屋精品视频免费看| 久久综合九色九九| 亚洲国产影院| 欧美精品一区二区三区四区| 一区二区不卡在线视频 午夜欧美不卡'| 欧美日韩精品| 亚洲曰本av电影| 国产亚洲网站| 蜜月aⅴ免费一区二区三区| 最新国产成人在线观看| 欧美调教vk| 午夜精品视频| 激情婷婷久久| 欧美巨乳在线观看| 亚洲嫩草精品久久| 狠狠狠色丁香婷婷综合激情| 欧美电影打屁股sp| 亚洲深夜av| 国产综合av| 欧美第一黄色网| 亚洲一级在线观看| 国产综合色产在线精品| 欧美成人免费一级人片100| 一区二区三区回区在观看免费视频| 国产精品免费网站在线观看| 久久久国产成人精品| 亚洲精选视频免费看| 国产精品国产馆在线真实露脸| 久久高清免费观看| 亚洲人线精品午夜| 国产精品呻吟| 久久亚洲二区| 妖精视频成人观看www| 国产精品永久入口久久久| 久久综合九色综合欧美就去吻 | 亚洲高清视频中文字幕| 亚洲午夜精品福利| 国产婷婷色综合av蜜臀av| 蜜桃av综合| 亚洲一区二区三区高清| 狠狠色噜噜狠狠色综合久| 欧美日韩一区二区欧美激情| 久久精品国产一区二区三区 | 久久综合久色欧美综合狠狠| 亚洲图片欧美日产| 在线精品高清中文字幕| 国产精品久久久久国产a级| 久久资源在线| 亚洲在线一区二区三区| 亚洲福利国产| 国产精品美女午夜av| 欧美大尺度在线| 欧美中文字幕久久| 99国产精品久久久| 伊人久久婷婷| 国产精品一区二区视频| 欧美激情精品久久久| 久久黄色小说| 亚洲视频欧美视频| 亚洲国产另类久久精品| 国产精品五区| 欧美日韩精品一区| 老鸭窝91久久精品色噜噜导演| 亚洲一区二区影院| 亚洲美女免费视频| 国内精品视频在线播放| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 欧美精品自拍| 久久久噜噜噜久久人人看| 亚洲在线一区| 日韩视频不卡中文| 亚洲第一搞黄网站| 国产一区二区av| 国产精品人人做人人爽| 欧美日韩国产二区| 欧美91视频| 久久婷婷久久一区二区三区| 亚洲欧美日韩人成在线播放| 在线亚洲免费视频| 日韩亚洲视频在线| 91久久黄色| 亚洲二区三区四区| 伊人春色精品| 狠狠88综合久久久久综合网| 国产九九视频一区二区三区| 欧美视频一区二区三区在线观看| 欧美sm视频| 狂野欧美激情性xxxx欧美| 久久精品国产一区二区三区| 午夜欧美大片免费观看| 亚洲一区在线免费| 一区二区日韩精品| 99这里只有精品| 亚洲精品影视在线观看| 亚洲国产精品久久久久秋霞蜜臀| 激情欧美一区二区三区| 黄色亚洲在线| 狠狠爱综合网| 在线观看精品| 亚洲大片在线| 1024亚洲| 亚洲国产你懂的| 亚洲精选一区| 亚洲剧情一区二区| 亚洲另类在线一区| 亚洲精品综合久久中文字幕| 亚洲区一区二| 99精品久久免费看蜜臀剧情介绍| 亚洲免费成人av电影| 99国产精品99久久久久久|