📌  相关文章
📜  Uncaught (in promise) DOMException: 加载失败,因为没有找到支持的源. - Javascript(1)

📅  最后修改于: 2023-12-03 14:48:09.877000             🧑  作者: Mango

Uncaught (in promise) DOMException: 加载失败,因为没有找到支持的源.

在 JavaScript 中,当我们尝试加载一个资源时,有时会遇到 DOMException 异常。其中一个常见的异常是 "Uncaught (in promise) DOMException: 加载失败,因为没有找到支持的源。"

这个异常通常发生在以下几种情况下:

  1. 资源路径错误:可能是输入了错误的路径、文件名或 URL。
  2. 资源不存在:资源可能被删除或移动,或者根本不存在于服务器上。
  3. MIME 类型不匹配:如果服务器返回的 MIME 类型与客户端请求的 MIME 类型不匹配,浏览器则无法正确处理该资源。

在出现这个异常时,可以通过以下几种方式解决:

检查资源路径

首先,检查你是否输入了正确的资源路径。如果你使用的是相对路径,请确保路径正确,特别是在引用嵌套文件夹中的资源时。

检查资源是否存在

如果资源路径是正确的,接下来需要检查资源是否真的存在。你可以尝试手动在浏览器中打开该资源,或者使用开发者工具来检查资源是否存在。

检查服务器返回的 MIME 类型

如果资源路径和资源本身都是正确的,但仍然无法加载,那么问题可能是服务器返回的 MIME 类型与客户端请求的 MIME 类型不匹配。在这种情况下,你可以使用以下两种方法来解决:

  1. 在服务器端配置正确的 MIME 类型,以便与客户端请求匹配。
  2. 在客户端中指定正确的 MIME 类型。

在 JavaScript 中,你可以使用 Blob 和 URL.createObjectURL() 方法来加载资源并指定正确的 MIME 类型。示例代码如下所示:

fetch('path/to/resource')
  .then(response => response.blob())
  .then(blob => {
    const url = URL.createObjectURL(blob);
    const audio = new Audio(url);
    audio.type = 'audio/wav'; // 指定正确的 MIME 类型
    audio.play();
  })
  .catch(error => console.error(error));

总之,当你遇到 "Uncaught (in promise) DOMException: 加载失败,因为没有找到支持的源。" 异常时,不要慌张。根据上述方法逐一排查问题,相信会成功解决问题。