为什么我在原版 JavaScript 项目中收到“Uncaught SyntaxError: ambiguous indirect export”错误消息?

Why am I getting a "Uncaught SyntaxError: ambiguous indirect export" error message in my vanilla JavaScript project?

提问人:Saad 提问时间:7/29/2023 更新时间:7/29/2023 访问量:859

问:

我有一个普通的 JavaScript 项目。 我正在尝试从一个文件中导出 2 个函数并将它们导入另一个文件。 但是,我收到以下错误消息:

Uncaught SyntaxError: ambiguous indirect export: anchor_b

以下是 2 个文件的内容:

文件 1(锚点.js)

let anchor_a = () => "abcd1234";
let anchor_b = () => "xyz789";

export default { anchor_a, anchor_b };

文件 2

import { anchor_a, anchor_b } from "./anchors.js";
console.log(anchor_a());
console.log(anchor_b());

为什么代码不起作用,我如何让它工作?

JavaScript 导入 导出 语法错误

评论

1赞 Heiko Theißen 7/29/2023
您要使用 .export { anchor_a, anchor_b };

答:

2赞 Kenny 7/29/2023 #1

不能将默认导出作为导入声明的一部分进行解构。

注意:import { x, y } from “mod” 不等同于 import defaultExport from “mod” 然后从 defaultExport 解构 x 和 y。命名导入和默认导入是 JavaScript 模块中的不同语法。

相反,您可以做的是先导入对象,然后解构对象,如下所示:anchors

// anchors.js
let anchor_a = () => "abcd1234";
let anchor_b = () => "xyz789";

export default { anchor_a, anchor_b };
// File 2
import anchors from "anchors.js";
let { anchor_a, anchor_b } = anchors;

或者使用命名导入(首选解决方案):

// anchors.js
export let anchor_a = () => "abcd1234";
export let anchor_b = () => "xyz789";
// File 2
import { anchor_a, anchor_b } from "anchors.js";