如何解决 ES 模块范围內的“__dirname 未定义”的錯誤

下面是如何解决“__dirname 未定义在 ES 模块范围內”的錯誤的方法。 在使用 ES 模块時,无法使用 __dirname。 在 Node 脚本中,可以使用 __dirname 获取 当前 JavaScript 文件所在文件夹的路径,许多 Node.js 项目中都会使用它。 但是,如果在 ES 模块中使用它,你将遇到“__dirname 在 ES 模块范围內未定义”的錯誤。 在这种情况下,你可以做什么呢? 我通过使用在 Node.js GitHub 问题页面中找到的解决方案来解决此问题。 首先,你需要导入 Node.js 的 path 模块 和 url 模块中的 fileURLToPath 函数: import path from 'path'; import { fileURLToPath } from 'url'; 然后,你可以按照以下方式复制 __dirname 的功能: const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); 顺便一提,这也复制了 __filename,它返回正在执行的代码的文件名。 现在,你可以像往常一样使用 __dirname: console.log(__dirname)