NodeJs 错误 SyntaxError: Requested module does not provide export named ‘default’

当我们尝试使用默认导入从文件中导入值或函数时,会出现错误“The requested module does not provide an export named ‘default’”,但未使用默认导出从文件中导出该值。

下面是错误发生方式的示例。 这是我们的 index.js 文件:

index.js

export function sum(a, b) {
  return a + b;
}

下面是一个从 index.js 导入函数的文件。

another-file.js

// ⛔️ The requested module './index.js' does not provide
// an export named 'default'
import sum from './index.js';

console.log(sum(10, 10));

上面的示例会出现我们本文中介绍的错误

NodeJs 错误 SyntaxError: Requested module does not provide export named 'default'

我们在 index.js 中使用了命名导出,但是当我们在另一个文件中导入函数时,我们使用了默认导入。 这就是发生错误的原因。

要解决错误“Requested module does not provide export named ‘default’”,请在从文件中导出值时使用 default 关键字,并且不要将相应的导入包含在花括号中。 每个文件只能有一个 defalut 导出。

// 👇️ default export
export default function sum(a, b) {
  return a + b;
}

并在另一个文件中导入该函数。

// 👇️ default import
import sum from './index.js';

console.log(sum(10, 10)); // 👉️ 20

请注意,我们在使用 defalut 导入时不使用花括号。

每个文件只能有 1 个默认导出。

如果要将变量导出为默认导出,则必须在第一行声明它并在下一行导出。 我们不能在同一行声明和默认导出变量。

const str = 'hello';

// ✅ Works
export default str;

以下是使用命名导入/导出的方法。

// 👇️ named export
export function sum(a, b) {
  return a + b;
}

现在我们必须在另一个文件中使用命名导入。

// 👇️ named import
import {sum} from './index.js';

console.log(sum(10, 10)); // 👉️ 20

导入用花括号{}括起来。 这就是我们导入命名导出的方式。

我们必须与自己的 import 和 export 保持一致。 导入 default 导出时不要使用大括号,导入命名导出时不要使用大括号。

我们也可以混搭,这里有一个例子。

// 👇️ named export
export const num = 33;

// 👇️ default export
export default function sum(a, b) {
  return a + b;
}

这是 import 的。

another-file.js

// 👇️ default 和 named 导入
import sum, {num} from './index.js';

console.log(sum(10, 10)); // 👉️ 20
console.log(num); // 👉️ 33

我们使用 default 导入来导入 sum 函数,并使用命名导入来导入 num 变量。

要解决“Requested module does not provide export named ‘default’”错误,请与我们的 ES6 导入和导出保持一致。 如果将值作为default 导出来导出,则必须将其作为 default 导入来导入,如果将其作为命名导出来导出,则必须将其作为命名导入进行导入。

免责声明:
1.本站所有内容由本站原创、网络转载、消息撰写、网友投稿等几部分组成。
2.本站原创文字内容若未经特别声明,则遵循协议CC3.0共享协议,转载请务必注明原文链接。
3.本站部分来源于网络转载的文章信息是出于传递更多信息之目的,不意味着赞同其观点。
4.本站所有源码与软件均为原作者提供,仅供学习和研究使用。
5.如您对本网站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。
火焰兔 » NodeJs 错误 SyntaxError: Requested module does not provide export named ‘default’