在 Express 中使用 ES6 模块

Gio*_*Sh. 16 javascript module node.js express ecmascript-6

有没有办法

  1. 在应用程序中使用 ES6 模块编写我的代码Express
  2. 而不恢复到babel@std/esm?

一旦我承诺app.jsExpress,我就找不到摆脱它的方法。

这看起来应该已经在网上了,但我能找到的只是上面的选项(转译、esm)。

jfr*_*d00 26

对于 Node.js,您必须告诉它您正在加载的主文件是 ESM 模块。有几种方法可以做到这一点。最简单的方法是为主文件指定一个.mjs文件扩展名。

// app.mjs

import express from 'express';

const app = express();

app.get("/", (req, res) => {
    res.send("hello");
});

app.listen(80);
Run Code Online (Sandbox Code Playgroud)

然后,启动你的程序:

node app.mjs
Run Code Online (Sandbox Code Playgroud)

这有效 - 我刚刚使用节点 v14.4.0 运行它:。我之前给您的链接中讨论了其他方法。根据该文档,可以通过三种方式指定将 ESM 模块加载为顶级模块文件:

  1. .mjs.

  2. .js当最近的父package.json文件包含值为“module”的顶级字段“type”时,文件以 结尾。

  3. 字符串作为参数传入--eval,或通过 STDIN 通过管道传输到节点,带有标志--input-type=module