如何在 Node.js 中使用 ES6 导入?

新手上路,请多包涵

我正在尝试在 Node.js 中掌握 ES6 导入的窍门,并尝试使用此示例中提供的语法:

备忘单链接

我正在查看 支持表,但找不到支持新导入语句的版本(我尝试查找文本导入/要求)。我目前正在运行 Node.js 8.1.2,并且还相信由于备忘单指的是 .js 文件,因此它应该适用于 .js 文件。

当我运行代码时(取自备忘单的第一个示例):

 import { square, diag } from 'lib';

我得到错误:

SyntaxError:意外的令牌导入。

对我要导入的库的引用:

 //------ lib.js ------
export const sqrt = Math.sqrt;
export function square(x) {
    return x * x;
}
export function diag(x, y) {
    return sqrt(square(x) + square(y));
}

我错过了什么,我怎样才能得到 node 来识别我的 import 声明?

原文由 Jonathan002 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 966
2 个回答

Node.js 包含对 ES6 支持的实验性支持。在此处阅读更多信息: https ://nodejs.org/docs/latest-v13.x/api/esm.html#esm_enabling。

TLDR;

Node.js >= v13

在 Node.js 13 及更高版本中非常简单。您需要:

  • 使用 .mjs 扩展名保存文件,或
  • 添加 { "type": "module" } 在最近的 package.json

您只需执行上述操作之一即可使用 ECMAScript 模块。

Node.js <= v12

如果您使用的是 Node.js 版本 9.6 - 12,请使用带有 .mjs 扩展名的 ES6 模块 保存 文件并运行它:

 node --experimental-modules my-app.mjs

原文由 tbking 发布,翻译遵循 CC BY-SA 4.0 许可协议

您还可以使用名为 esm 的 npm 包,它允许您在 Node.js 中使用 ES6 模块。它不需要配置。使用 esm,您将能够在 JavaScript 文件中使用导出/导入。

在您的终端上运行以下命令

yarn add esm

要么

npm install esm

之后,在使用 node 启动服务器时需要 require 这个包。例如,如果您的节点服务器运行 index.js 文件,您将使用以下命令

node -r esm index.js

您也可以像这样将它添加到您的 package.json 文件中

{
  "name": "My-app",
  "version": "1.0.0",
  "description": "Some Hack",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node -r esm index.js"
  },

}

然后从终端运行这个命令来启动你的节点服务器

npm start

检查 此链接 以获取更多详细信息。

原文由 Seunope 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题