启用


🌐 Enabling

Node.js 有两种模块系统:CommonJS 模块和 ECMAScript 模块

🌐 Node.js has two module systems: CommonJS modules and ECMAScript modules.

默认情况下,Node.js 会将以下内容视为 CommonJS 模块:

🌐 By default, Node.js will treat the following as CommonJS modules:

  • 具有 .cjs 扩展名的文件。
  • 当最近的父 package.json 文件包含一个顶层字段 "type",其值为 "commonjs" 时,具有 .js 扩展名或没有扩展名的文件。
  • 当最近的父级 package.json 文件不包含顶层字段 "type",或者任何父级文件夹中没有 package.json 时,带有 .js 扩展名或没有扩展名的文件;除非文件包含必须作为 ES 模块评估才能正常工作的语法。即使在所有源都是 CommonJS 的包中,包的作者也应该包含 "type" 字段。明确指出包的 type 将使构建工具和加载器更容易确定包中的文件应该如何解释。
  • 当最近的父级 package.json 文件包含顶层字段 "type" 且值为 "module" 时,扩展名不是 .mjs.cjs.json.node.js 的文件。

有关详细信息,请参见确定模块系统

🌐 See Determining module system for more details.

调用 require() 总是使用 CommonJS 模块加载器。调用 import() 总是使用 ECMAScript 模块加载器。

🌐 Calling require() always use the CommonJS module loader. Calling import() always use the ECMAScript module loader.