发布于 2026-01-06 4 阅读
0

如何在Node.js中使用MJS文件?

如何在Node.js中使用MJS文件?

今天我想向大家展示如何从 *.mjs 文件中导入函数。你可以把 MJS 理解为以标准化模块格式导出的 JavaScript 代码。它本质上是模块化的 JavaScript。这种标准化本身被称为 ECMAScript 模块 (ESM)。

默认情况下,Node.js 平台不使用 ES 模块,而是使用 CommonJS,这是一种不同的模块格式化系统。幸运的是,Node.js 团队早在 2017 年的 Node v8.9.0 版本中就引入了 ES 模块的概念。当时,你可以通过添加一个额外的标志(--experimental-modules)来运行 Node.js 以使用它。

自 Node v13.2.0 起,不再需要实验性标志。现在只需几个步骤即可使用 ECMAScript 模块。让我来演示一下。

1. 创建 ES 模块/MJS 文件

设置 ES 模块很简单:只需创建一个扩展名为 *.mjs 的文件,然后使用export关键字导出代码即可:

myFunction.mjs

export function myFunction(a, b) {
  return `${a} ${b}`;
}
Enter fullscreen mode Exit fullscreen mode

2. 导入你的代码

您可以使用关键字导入 ES 模块import。如果您使用 TypeScript,可能已经熟悉这种语法。您可以将 MJS 文件导入到普通的 JavaScript (JS) 文件中:

start.js

import { myFunction } from "./myFunction.mjs";

const text = myFunction("Hello", "World");
console.log(text);
Enter fullscreen mode Exit fullscreen mode

提示:别忘了在导入语句中添加 *.mjs 扩展名。如果省略文件扩展名,Node.js 将查找 .js 文件并报告以下错误:

node:internal/process/esm_loader: internalBinding('errors').triggerUncaughtException
错误 [ERR_MODULE_NOT_FOUND]: 找不到模块

3. 将包类型设置为“模块”

这可能是最大的变化:你需要typepackage.json文件中创建一个名为 `<property name>` 的属性。要使用 ES 模块,必须将其设置为 `<property name> module`。

package.json

{
  "name": "my-package",
  "scripts": {
    "start": "node src/start.js"
  },
  "type": "module",
  "version": "0.0.0"
}
Enter fullscreen mode Exit fullscreen mode

如果您忘记设置该type属性,或者将其设置为 0 commonjs,则会遇到以下错误:

(node:2346) 警告:要加载 ES 模块,请在 package.json 中设置 "type": "module" 或使用 .mjs 扩展名。
语法错误:不能在模块外部使用 import 语句

结束

现在你已经了解了使用 MJS 文件的基本知识。我用 Node v15.14.0 测试了我的代码清单。祝你尝试顺利!🍀

保持联系🔗

如果你喜欢这篇文章,请在Twitter上关注我订阅我的YouTube频道。我很想了解你正在制作什么。🙂祝好,Benny

文章来源:https://dev.to/bennycode/how-to-use-mjs-files-in-node-js-23ep