我该如何在 Node.js 中使用 ES6 导入?
我该如何在 Node.js 中使用 ES6 导入?
这个问题已经有了答案:
我正试图掌握 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
语句?
您还可以使用名为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
请查看此链接获取更多详细信息。
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