提问人:Saad 提问时间:7/29/2023 更新时间:7/29/2023 访问量:859
为什么我在原版 JavaScript 项目中收到“Uncaught SyntaxError: ambiguous indirect export”错误消息?
Why am I getting a "Uncaught SyntaxError: ambiguous indirect export" error message in my vanilla JavaScript project?
问:
我有一个普通的 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());
为什么代码不起作用,我如何让它工作?
答:
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";
评论
export { anchor_a, anchor_b };