查看原文
其他

2024 年 Node.js 首次发布,这个特性终于支持了!

小懒 FED实验室 2024-02-12
关注下方公众号,获取更多热点资讯

今天是坚持日更的第134天,如果本文对您有帮助,请在文章末尾点击分享、在看、点赞支持我


在 2023 年 10 月,我们迎来了 Node.js 21 版本和 Node.js 20(LTS) 版本。

近日,Node.js 社区正式发布 v20.11.0 LTS 版本,该版本是 Node.js 在 2024 年首次发布。本次虽然是一个小版本迭代,但仍然带来了 15 项稳定性改变和近 300 次提交。值得注意的是该版本增加了 import.meta.dirnameimport.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.filenameimport.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

大家都在看

继续滑动看下一个

2024 年 Node.js 首次发布,这个特性终于支持了!

小懒 FED实验室
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存