You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中require("node:<模块名>")与require("<模块名>")的区别?

Node.js中require("<module>")与require("node:<module>")的区别
  • 功能完全等价
    两种写法加载的是同一个Node.js核心模块,运行起来没有任何差异,比如require("http")和require("node:http")最终都会拿到官方内置的HTTP模块对象。

  • node:前缀的核心价值

    • 避免模块命名冲突:如果你的项目里刚好有和核心模块同名的本地文件、第三方包,require("http")可能会优先加载项目里的自定义模块,而require("node:http")会直接跳过这些,强制加载Node.js官方的核心模块,彻底杜绝歧义。
    • 代码意图更清晰:这个前缀是官方后来推出的规范写法,相当于给核心模块加了专属命名空间,别人看代码时一眼就能知道你用的是官方内置模块,不用再去猜是第三方包还是自定义模块。
  • 兼容性与文档说明

    • 这个写法从Node.js v14.13.0开始支持,低于这个版本的Node.js会报错,所以如果你的项目需要兼容低版本,还是用不带前缀的写法更稳妥。
    • 文档里没全面替换旧写法是因为要兼容历史内容,而且官方也没打算废弃旧写法,两种写法都属于合法用法。

内容的提问来源于stack exchange,提问作者Adrian Constantinescu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:44:58