其他
2024 年 Node.js 首次发布,这个特性终于支持了!
今天是坚持日更的第134天,如果本文对您有帮助,请在文章末尾点击分享、在看、点赞支持我
在 2023 年 10 月,我们迎来了 Node.js 21 版本和 Node.js 20(LTS) 版本。
近日,Node.js 社区正式发布 v20.11.0 LTS 版本,该版本是 Node.js 在 2024 年首次发布。本次虽然是一个小版本迭代,但仍然带来了 15 项稳定性改变和近 300 次提交。值得注意的是该版本增加了 import.meta.dirname
和 import.meta.filename
属性。
在该版本之前使用 ES module 的开发者,经常会遇到 __dirname is not defined in ES module scope
的问题:
在 Node.js 中运行的 CommonJS 文件可以访问两个非常有用的变量:
__dirname - 当前文件所在的目录。 __filename - 当前文件的完整路径。
但是,在 ECMAScript 模块中,默认情况下这些属性不再可用。幸运的是,您可以自己重新创建它们,以获得与 import.meta.url
属性相同的信息:
import { fileURLToPath } from "node:url";
import path from "node:path";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
import.meta.url
属性是文件 URL,而不是文件路径,因此首先要将其转换为文件路径。之后,你只需使用 path.dirname()
提取目录。
在 v20.11.0 版本之后,可以直接通过 import.meta.filename
和 import.meta.dirname
:
// /Users/username/test/test.mjs
console.log(import.meta.filename);
// /Users/username/test
console.log(import.meta.dirname);
更多参考:https://nodejs.org/en/blog/release/v20.11.0
大家都在看