📅  最后修改于: 2023-12-03 15:14:53.662000             🧑  作者: Mango
在 Node.js 中,使用 __dirname
可以获取当前文件所在目录的绝对路径。但是在使用 ES6 的模块语法时,__dirname
会出现未定义的情况。
以下是两种替代方案:
在 ES6 中,可以使用 import.meta.url
来获取当前模块的绝对路径。因此,可以通过以下方式来获取当前文件所在目录的绝对路径:
import { fileURLToPath } from 'url';
import { dirname } from 'path';
const __dirname = dirname(fileURLToPath(import.meta.url));
在这里,我们使用了 Node.js 内置的 url
和 path
模块。fileURLToPath
用于将 import
的 url 转换为文件路径,dirname
用于获取文件所在目录的绝对路径。
另一种获取当前工作目录的方式是使用 process.cwd()
。由于 Node.js 的工作目录可以被改变,因此这种方法可能不如第一种方法稳定,但在某些情况下会更实用。
下面是一个示例:
const { resolve } = require('path');
const __dirname = resolve(process.cwd(), './dirname');
在这里,我们使用了 Node.js 内置的 path
模块。resolve
用于将多个路径解析为绝对路径,此处 resolve
函数的第二个参数为当前文件所在目录的相对路径。
以上两种方法都可以用来代替 __dirname
。如果您使用的是 ES6 模块语法,可以选择第一种方法,否则,选择第二种方法。