Node Require and Import
在ESM模块中没有__dirname
。如果你需要它,可以使用以下方法创建它:
import path from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename);
但是,fs
模块中的许多函数可以更直接地接受import.meta.url
。有关详细信息,请参见这个回答。
在ESM模块中,没有__dirname
这个全局变量。在CommonJS模块中,__dirname
表示当前模块的目录路径。然而,在ESM模块中,__dirname
被删除了。为了解决这个问题,可以使用上述代码片段来创建一个类似的__dirname
变量。
该代码使用import.meta.url
获取当前模块的URL,然后使用fileURLToPath
函数将URL转换为文件路径。最后,使用path.dirname
函数获取目录路径,并将其赋值给__dirname
变量。
另外,fs
模块的某些函数可以直接接受import.meta.url
作为参数,而不需要使用__dirname
。有关更多详细信息,请参见上面提供的链接。
通过以上方法,我们可以在ESM模块中模拟出__dirname
的功能,使得我们可以继续在ESM模块中使用与路径相关的操作。