提问者:小点点

将javascript作为节点为[重复]的模块运行


如果这是一个基本问题,我很抱歉。我是JavaScript新手,搜索后找不到答案。

我正在尝试运行文件 f1.js:

import abc from "./f2.js"

console.log(abc);

f2.js 如下所示:

export let abc = 1

当我试图使用命令< code>node f1.js运行f1.js时,它抛出一个错误:< code >语法错误:不能在模块外使用import语句

我见过其他人在html中运行多个文件并指定type=module。我的问题是,我可以在没有html文件的情况下这样做,而是使用node运行它吗?

提前谢谢。


共1个答案

匿名用户

Node. js有两个模块系统:Common JS模块和ECMAScript模块。

作者可以通过. mjs文件扩展名、pack.json“type”字段或--input-type标志告诉Node.js使用ECMAScript模块加载器。在这些情况之外,Node.js将使用Common JS模块加载器。

来源

要在node.js中使用导入/导出语句,您必须使用ECMAScript模块加载器。在您的示例中,最简单的解决方案是将文件扩展名改为"。mjs”。此外,正如@Konrad在评论中提到的,您必须在“abc”周围使用括号:

import {abc} from "./f2.js"