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

29 浏览
0 Comments

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

这个问题已经有了答案:

Node.js - SyntaxError: Unexpected token import

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

Cheatsheet 链接

我正在查看支持表格,但我无法找到支持新的导入语句的版本(我试图查找文本导入 / 需要)。我目前正在运行 Node.js 8.1.2,也认为由于 cheatsheet 是引用 .js 文件,因此应该能够使用 .js 文件。

当我运行代码(取自 cheatsheet 的第一个示例):

import { square, diag } from 'lib';

我得到了以下错误:

SyntaxError: Unexpected token import。

我正在尝试导入的库的引用:

//------ 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 语句?

admin 更改状态以发布 2023年5月20日
0
0 Comments

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

在终端上运行以下命令

yarn add esm

或者

npm install esm

之后,在使用node启动服务器时,需要引用此软件包。例如,如果您的node服务器运行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"
  },
}

然后从终端运行此命令启动您的Node服务器

npm start

请查看此链接获取更多详细信息。

0
0 Comments

Node.js已经包含了ES6支持的实验性支持。在这里了解更多信息:https://nodejs.org/docs/latest-v13.x/api/esm.html#esm_enabling

简而言之:

Node.js >= v13

在Node.js 13及以上版本中很简单。你需要:

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

你只需要在以上操作中选择一个,就可以使用ECMAScript模块。

Node.js <= v12

如果你正在使用Node.js版本在9.6 - 12之间,可以将ES6模块的文件保存为.mjs扩展名,并运行:

node --experimental-modules my-app.mjs

0