📅  最后修改于: 2023-12-03 15:29:16.356000             🧑  作者: Mango
当您在尝试在MJS文件中访问__filename时,可能会遇到__filename未在mjs文件中定义
的错误。这是因为在ECMAScript模块中,在文件中没有内置的全局常量和变量。
下面是一些解决方案:
要在MJS文件中获取当前文件的文件路径,可以使用import.meta.url
。此代码行将返回包含当前MJS文件路径的字符串。这意味着你可以使用类似以下的代码来代替__filename
:
const filePath = new URL(import.meta.url).pathname;
如果您只需要访问当前MJS文件的目录路径,可以使用import.meta.dirname
。这将返回包含当前MJS文件目录路径的字符串。这意味着您可以使用类似以下的代码:
const dirPath = path.dirname(new URL(import.meta.url).pathname);
请注意,上述示例使用Node.js的path模块。
您可以使用process.cwd()
和__dirname
变量来获取当前工作目录和当前MJS文件的目录路径,如以下代码所示:
const currentWorkingDirectory = process.cwd();
const currentDirName = __dirname;
请注意,这些变量是Node.js运行时中内置的全局变量。
无法在MJS文件中访问__filename
,因为它不是ECMAScript模块中的全局变量。但是,您可以使用许多其他方法来获取当前文件的路径和目录路径,包括使用import.meta.url,import.meta.dirname,process.cwd()和__dirname。根据您的特定需求,选择正确的方法并不困难。