成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

淺析nodejs中的__dirname和__filename變量

本篇文章帶大家了解一下node中你不知道的__dirname和__filename變量,有一定的參考價值,希望對大家有所幫助!

淺析nodejs中的__dirname和__filename變量

1.問題背景

寫這篇文章的背景在于今天遇到一個神奇的報錯,一起來看下

// index.js console.log(__filename); // 執行 node index.js // ReferenceError: __filename is not defined in ES module scope

在node環境訪問全局變量__filename居然報錯,什么原因呢??于是開始了一路的探索,最終找到問題的根源。

2. node模塊機制

我們知道早期node.js的模塊標準采用commonjs模塊規范,然而在nodejs版本v13.2.0中,開始支持ES Modules模塊規范,我們可以有以下幾種方式在node中使用ES Modules模塊

  • 將文件后綴命名為.mjs
  • package.json 新增 "type": "module"字段

當我們在node中使用ES Modules貴方,以下全局對象和變量將不可用

  • require
  • module.exports
  • exports
  • __filename
  • __dirname
  • NODE_PATH

3. 為什么采用commonjs模塊化可以使用__filename和__dirname?

這個問題,主要歸結于commonjs模塊下nodejs的運行機制,很多人可能認為__filename就是node環境中的全局變量,當出現這個問題的時候,我們才意識到,這兩個不是Node中真正的全局變量。

看一段簡單的js代碼

(function(){     console.log(arguments) // [1,2,3] })(1,2,3)

arguments在函數內部可以拿到調用函數時傳入的參數。

我們在node commonjs模塊中執行以下代碼

// index.js console.log(arguments); [Arguments] {   '0': {},   '1': [Function: require] {     resolve: [Function: resolve] { paths: [Function: paths] },     main: Module {       id: '.',       path: 'E:\nodeProjectStorehouse\nodeStudyFromBook',       exports: {},       filename: 'E:\nodeProjectStorehouse\nodeStudyFromBook\cc.cjs',       loaded: false,       children: [],       paths: [Array]     },     extensions: [Object: null prototype] {       '.js': [Function (anonymous)],       '.json': [Function (anonymous)],       '.node': [Function (anonymous)]     },     cache: [Object: null prototype] {       'E:\nodeProjectStorehouse\nodeStudyFromBook\cc.cjs': [Module]     }   },   '2': Module {     id: '.',     path: 'E:\nodeProjectStorehouse\nodeStudyFromBook',     exports: {},     filename: 'E:\nodeProjectStorehouse\nodeStudyFromBook\cc.cjs',     loaded: false,     children: [],     paths: [       'E:\nodeProjectStorehouse\nodeStudyFromBook\node_modules',       'E:\nodeProjectStorehouse\node_modules',       'E:\node_modules'     ]   },   '3': 'E:\nodeProjectStorehouse\nodeStudyFromBook\cc.cjs',   '4': 'E:\nodeProjectStorehouse\nodeStudyFromBook'

我們可以看到,arguments有5個參數,這5個參數就是exports, require, module, __filename, __dirname

到這里我們就清楚的知道,__filename不是全局變量,而是外層傳入的參數而已

既然這樣,我們在ES Modules模塊下,訪問arguments看下結果是什么?

// index.js ES modules console.log(arguments); // ReferenceError: arguments is not defined

4. ES Modules下如何使用__filename和__dirname?

node官方文檔建議使用import.meta.url變相的提供

// import.meta.url 返回模塊的絕對的 `file:` URL。 // url模塊中fileURLToPath()函數,返回完全解析的特定于平臺的 Node.js 文件路徑 // path模塊中dirname()函數,返回路徑的目錄路徑 import { fileURLToPath } from 'url'; import { dirname } from 'path'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename);

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
中文字幕乱近親相姦| 少女たちよ在线观看动漫在线观看| 免费女人18毛片A毛片视频| 免费人成在线观看视频无码 | 国产成人精品久久| 国产精品亚洲АV无码播放| 含羞草亚洲AV无码久久精品| 久久久久久精品免费无码| 免费无码又黄又爽又刺激| 人久久精品中文字幕无码小明47| 日韩久久一区二区三区蜜桃| 无码人妻一区二区三区一| 亚洲国产成人精品无码区在线| 亚洲中文字幕无码永久在线| 777米奇色狠狠888俺也去乱| 大乳VIDEOS巨大吃奶| 国产裸拍裸体视频在线观看 | 强行征服邻居人妻| 天堂资源在线官网| 亚洲女同精品一区二区| 中文字幕无码精品亚洲资源网久久| 班长哭着说不能再C了视频 | 小洞饿了想吃大香肠| 亚洲鲁丝片一区二区三区| 3D动漫同人精品无码专区| 宝宝湿透了还嘴硬怎么回事| 国产成人久久精品| 久久WWW成人_看片| 人妻少妇伦在线无码| 西西人体艺术摄影| 医院人妻闷声隔着帘子被中出| 男按摩师舌头伸进去了| 精品人妻人人做人人爽| 尿眼PEEHOLE重口| 欧美黑人又大又粗XXXⅩ| 少妇性XXXXXXXXX色野| 亚洲AⅤ精品无码一区二区嫖妓| 亚洲中文字幕无码中文| 成人糖心VLOG视频| 狠狠色丁香婷婷综合久久图片| 妺妺窝人体色WWW写真| 乌克兰性猛交ⅩXXX乱大交| 亚洲国产精品一区二区成人片 | 毛耸耸性XXXX毛耸耸| 少妇被躁爽到呻吟全过的小说| 亚洲日本一线产区和二线产区区别| 啊灬啊别停灬用力啊公视频| 国产精品亚洲精品日韩已满 | 国产色无码精品视频国产| 久久蜜桃86人妻arvi| 色妺妺AⅤ爽爽影院偷拍| 日产乱码一二三区别免费下载| 亚洲AV伊人久久青青草原视色| 中文字幕三级人妻无码视频| 国产精品久久久影视青草| 免费又黄又硬又爽大片免费| 五十老熟妇乱子伦免费观看| 97人妻人人做人碰人人爽一| 国产色欲色欲色欲.WWW| 欧美一级137片内射亚洲| 亚洲AV少妇熟女猛男| А√天堂资源地址在线官网| 国语对白国产成人AⅤ片| 人妻丰满熟妇AV无码区| 亚洲情文字幕在线一区| 堕落的人妻1―10雨柔| 久久亚洲精品无码GV| 无码人妻AⅤ一区二区三区蜜桃| 2022国产成人无码AⅤ片| 国产怡春院无码一区二区 | 啊宝宝的扇贝真会夹C视频| 亚洲欧美综合人成在线| 中文字幕在线播放| 国产精品自在线拍国产| 妺妺坐在我腿上勃起弄了应用| 香蕉成人伊视频在线观看| 99久久精品免费观看国产| 在厨房我撕开岳的丁字裤| 国产大陆亚洲精品国产| 欧美日韩亚洲国产综合乱| 伊人久久大香线蕉AV波多野结衣| 日本大一大二大三在一起读吗| 亚洲国产成人精品无码一区二区| 成年无码AV片在线狼人| 熟妇人妻无乱码中文字幕| 亚洲国产精品无码久久98| 成人免费一区二区三区视频软件| 两性午夜刺激性视频2345| 亚洲AV无码AV制服另类专区| 东北一家人1一6全文阅读小说| 久久亚洲男人第一AV网站| 欧洲美熟女乱又伦免费视频| 亚洲AV无码一区二区三区人| 大肉大捧一进一出视频| 男男GAY腐片GⅤ2022| 亚洲人成无码网站在线观看野花| 国产AV天堂亚洲国产AV麻豆| 欧美性黑人极品HD另类| 又黄又爽又色的视频| 精品久久久久久中文字幕大豆网| 无码人妻丰满熟妇区BBBBXX| 成人免费无码大片A毛片抽搐色欲 成人免费无码大片A毛片抽搐 | 亚洲AV无码专区在线观看成人| 国产成人亚洲日韩欧美| 日本三级香港三级人妇99| 99精品国产在热久久无毒不卡| 久久五月精品中文字幕| 亚洲欧美激情精品一区二区| 国产曰的好深好爽免费视频| 无码一区二区三区| 国产成人无码综合亚洲日韩| 少妇人妻陈艳和黑人教练| 成年女美黄网站大全免费播放| 人妻精品久久无码区| XXXX内射中国老妇| 欧美最爽的乱婬视频婬色视频| 2012电影在线观看神马影院| 老奶奶BGMBGM人与自然| 英语老师乖乖挽起裙子的意思 | 男生把自己的手到女生的QQ里 | 欧美嫩FREEXXXHD| 最新国产成人AB网站| 蜜臀AⅤ永久无码精品| 在线观看ww亚洲精品| 老熟女太熟了95AV| 中文无码乱人伦中文视频在线V| 久亚洲一线产区二线产区三线产区| 亚洲一区强奸视频| 久久久久久久精品免费| 一本大道香蕉久97在线播放| 久久水蜜桃网国产无线网欧美日韩| 亚洲一二三四2021不卡| 久久香蕉超碰97国产精品| 尤物一二三区在线内射美女| 久久亚洲精品成人AV无码涩涩屋| 曰本丰满成熟xxxx精品| 免费黄色电影在线观看| 最新高清无码专区| 欧美噜噜久久久XXX| 波多野结衣一二三区AV高清| 日日噜噜夜夜狠狠久久丁香五月 | 精产国品一二三产品区别在| 亚洲国产精品无码中文字APP | 亚洲人成无码网WWW电影麻豆| 久久久99久久久国产自输拍| 夜夜揉揉日日人人青青| 免费无码又爽又刺激软件下载直播| 97人妻天天爽夜夜爽二区| 欧洲一卡二卡三卡| 大号BBVVBBW高潮| 无码人妻精品一区二区蜜桃AV| 国产无人区码一码二码三MBA| 亚洲成在人线视AV| 里番本子侵犯肉全彩无码| 97久久天天综合色天天综合色H| 人妻AV无码一区二区三区| 豆国产97在线 | 亚洲| 西西人体艺术图片| 久久九九精品99国产精品| 97精品久久久久中文字幕| 日本免码VA在线看免费最新| 国产精品毛片无码一区二区蜜桃| 亚洲AV中文无码字幕色本草| 久久夜色精品国产亚洲AV动态图 | 越南少妇BBV叉叉叉| 欧美午夜成人精品| 丰满老熟妇好大BBBBB四P| 西西人体大胆午夜啪啪| 久久久99精品成人片| 99久久99这里只有免费费精品| 欧美一区精品视频一区二区 | 久久麻豆精亚洲AV品国产APP| 99久久精品无码专区| 少妇被猛烈进入到喷白浆| 国精产品一二二区视早餐有限| 伊人久久大香线蕉无码不卡| 人妻聚色窝窝人体WWW一区| 国产精品欧美久久久久无广告| 久久久久久久女国产乱让韩 | 高h乱好爽要尿了潮喷了| 亚洲AV成人无码深夜高潮| 巨大垂乳日本熟妇挤奶| 成人av在线网站| 亚洲妇女行蜜桃AV网网站| 内射丰满熟妇18p一区二区| 东北老女人高潮大喊舒服死了| 亚洲AV无码日韩AV无码导航 | MM1313亚洲精品无码| 无码网站天天爽免费看视频| 久久久久亚洲AV成人无码网站| 爱情岛亚洲AV永久入口首页| 小洞饿了想吃大香肠喝热牛奶是| 老肥熟妇丰满大屁股在线播放| 粗大的内捧猛烈进出小视频| 亚洲成人av在线| 破了亲妺妺的处免费视频国产| 国产精品久久久久久吹潮| 在线观看片免费人成视频无码| 日韩精品无码一区二区三区不卡| 娇妻呻吟黑人又粗又大视频 |