欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:【nodejs】“

柚子快報(bào)激活碼778899分享:【nodejs】“

http://yzkb.51969.com/

? 目錄 ?

? 問(wèn)題描述環(huán)境

1?? 原理CommonJS vs ESM錯(cuò)誤原因

2?? 禁用 ESM 模式并改用 CommonJS方案一:項(xiàng)目方案二:?jiǎn)挝募?/p>

3?? 在 ESM 模式下自實(shí)現(xiàn)__dirname? 參考資料

? 問(wèn)題

描述

從網(wǎng)上找了一份代碼,其中包含了__dirname變量的使用,結(jié)果運(yùn)行的時(shí)候報(bào)錯(cuò):__dirname is not defined

環(huán)境

版本號(hào)描述文章日期2023-06-操作系統(tǒng)Ubuntu 20.04.4 LTSCSDN開發(fā)云node -vv16.17.0npm -v (8.15.0)Cloud IDE1.71.0操作系統(tǒng)Win11 - 21H2 - 22000.1335Python3.7.1frida.exe15.0.18

1?? 原理

CommonJS vs ESM

討論__dirname報(bào)錯(cuò),首先要分清楚CommonJS 和 ESM的區(qū)別。 CommonJS 和 ESM(ECMAScript Modules) 都是 JavaScript 模塊系統(tǒng)的規(guī)范,用于組織和管理代碼。它們之間有一些區(qū)別,下面簡(jiǎn)要介紹一下:

特點(diǎn)CommonJSESM加載方式同步加載異步加載導(dǎo)出/引入關(guān)鍵字module.exports 和 require()export 和 import支持環(huán)境Node.js 默認(rèn)支持現(xiàn)代瀏覽器和最新版本的 Node.js 支持應(yīng)用范圍主要用于服務(wù)器端開發(fā),如 Node.js在瀏覽器端和 Node.js 中有廣泛應(yīng)用,是未來(lái)趨勢(shì)

錯(cuò)誤原因

在 CommonJS 模式下,__dirname 是包含當(dāng)前文件目錄的變量。 許多Node.js項(xiàng)目都依賴于此變量。 但不能在 ESM 模式下使用(ESM模式不提供 __dirname 變量)。 您有兩種選擇:

禁用 ESM 模式并改用 CommonJS聚填充__dirname

2?? 禁用 ESM 模式并改用 CommonJS

在 JavaScript 中,通常文件擴(kuò)展名 “.js” 用于表示普通的 JavaScript 文件, 而 “.mjs” 用于表示 ECMAScript 模塊(ESM)文件。這兩種文件擴(kuò)展名的區(qū)別在于它們所代表的 JavaScript 模塊類型。

.js 文件:通常用來(lái)表示普通的 JavaScript 文件,其中可能包含常規(guī)的 JavaScript 代碼,采用 CommonJS 或其他模塊加載方案。.mjs 文件:表示 ECMAScript 模塊,這種文件中的代碼采用了 ECMAScript Modules(ESM)規(guī)范,即使用 “import” 和 “export” 關(guān)鍵字來(lái)定義模塊。

要使用 “.mjs” 文件,您需要確保在 Node.js 中啟用了對(duì) ECMAScript 模塊的支持。您可以通過(guò)以下幾種方式之一實(shí)現(xiàn):

方案一:項(xiàng)目

Node.js 項(xiàng)目中的 package.json 文件是一個(gè)用于描述項(xiàng)目信息、依賴關(guān)系和腳本命令的 JSON 文件。它位于項(xiàng)目根目錄下,是 Node.js 項(xiàng)目的重要配置文件之一。 在 Node.js 項(xiàng)目中的 package.json 文件中,“type” 字段不要設(shè)置為 “module”,以明確告知 Node.js 不使用 ESM 規(guī)范(或者直接刪除)

方案二:?jiǎn)挝募?/p>

對(duì)于單文件運(yùn)行node,即不包含 package.json 文件的情況。node是根據(jù)文件后綴判斷運(yùn)行模式的。 我們確保文件后綴是.js,而不是.mjs即可使用__dirname。

3?? 在 ESM 模式下自實(shí)現(xiàn)__dirname

在 ECMAScript 模塊(ESM)中,與 CommonJS 不同,沒(méi)有像 __dirname 這樣的內(nèi)置變量來(lái)表示當(dāng)前模塊的目錄路徑。不過(guò),您可以通過(guò)一些方法來(lái)模擬實(shí)現(xiàn)類似的功能。

一種常見(jiàn)的方法是使用 import.meta.url 屬性來(lái)獲取當(dāng)前模塊的 URL,然后從中提取出目錄路徑。下面是一個(gè)示例代碼,演示如何在 ESM 模式下自實(shí)現(xiàn)類似 __dirname 的功能:

import path from 'path';

import { fileURLToPath } from 'url';

const __dirname = path.dirname(fileURLToPath(import.meta.url));

在這個(gè)示例中,我們首先導(dǎo)入了 Node.js 中的 fileURLToPath 和 dirname 函數(shù),然后使用 import.meta.url 獲取當(dāng)前模塊的 URL。接著,通過(guò) fileURLToPath 將 URL 轉(zhuǎn)換為文件路徑,并最終通過(guò) dirname 獲取該文件路徑的目錄部分,從而模擬實(shí)現(xiàn)了類似 __dirname 的功能。 請(qǐng)注意,這種方法依賴于 Node.js 提供的 url 和 path 模塊,確保您的項(xiàng)目中已安裝這些模塊。這樣,您就可以在 ESM 模式下獲取當(dāng)前模塊的目錄路徑,類似于 CommonJS 中的 __dirname 變量。

? 參考資料

How To Fix “__dirname is not defined” Error in Node.js https://masteringjs.io/tutorials/node/__dirname-is-not-defined

柚子快報(bào)激活碼778899分享:【nodejs】“

http://yzkb.51969.com/

好文鏈接

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19112143.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄