一尘不染

如何在节点中使用es6导入?

node.js

我试图ES6在节点中陷入进口的泥潭,并试图使用此示例中提供的语法:

[备忘单链接](https://hackernoon.com/import-export-default-require-commandjs-

javascript-nodejs-es6-vs-cheatsheet-different-tutorial-example-5a321738b50f)

我正在浏览支持表,但无法找到哪个版本支持新的导入语句(我尝试查找文本导入/请求),我目前正在运行节点8.1.2,并且还认为由于备忘单是引用.js文件,它应该与.js文件一起使用。

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

import { square, diag } from 'lib';

我得到错误:

SyntaxError: Unexpected token import.

我要导入的对lib的引用:

//------ 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陈述?


阅读 260

收藏
2020-07-07

共1个答案

一尘不染

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

TLDR;

节点 > = v13

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

  • 保存带有.mjs扩展名的文件,或
  • 加上{ "type": "module" }最近的package.json

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

节点 <= v12

如果您使用的是节点版本8-12,请使用.mjs扩展名为ES6的模块保存文件,然后按以下方式运行:

node --experimental-modules my-app.mjs
2020-07-07