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

标签 node.js es6-modules

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

Cheatsheet Link

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

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

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

最佳答案

Node.js has included experimental support for ES6 support. Read more about here: https://nodejs.org/docs/latest-v13.x/api/esm.html#esm_enabling.

TLDR;

Node.js >= v13

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

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

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

Node.js <= v12

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

node --experimental-modules my-app.mjs

关于node.js - 如何在 Node.js 中使用 ES6 导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45854169/

相关文章:

node.js - Node Webkit 桌面应用程序 - PDF 文件的浏览器默认缓存

javascript - Phonegap 3.0,Cordova CLI : an error occurred during creation of ios sub-project

javascript - 将全局导入模块模式转换为 ES6 模块

es6 导入和导出中的模块说明符

ruby-on-rails - 如何在 Rails 6 中配置 Jasmine?

node.js - 使用现有文档保存的 Mongoose 不会覆盖相同的对象引用

javascript - Mongoose : Best way to get values for an object before save

javascript - Node.js:请求页面并允许页面在抓取之前构建

node.js - Nodemon 在尝试使用 es6 模块时崩溃,但在 es5 上运行良好

javascript - Sequelize 关联包含返回 null