通过 HTTP 托管时浏览器中出现 p5.sound 错误?

Error from p5.sound in browser when it is hosted via HTTP?

我在我的学校项目中使用 p5.js,它在 Google Chrome(还有 Microsoft Edge,关于 Opera 的 idk)中不起作用,激活了 JavaScript,但只有当它在托管时。当我在 Localhost 上获得它时,它工作得很好。在 Mozilla 中,它适用于两种情况。我很困惑。

http://klauzury2c2021.8u.cz/ 您可以在网站上找到所有代码

看起来您正在使用 p5.Sound 库点击 this issue,这会阻止它在通过 http 加载时正常工作。由于您在 public 服务器上托管您的站点,因此最好的解决方案是为您的服务器启用 HTTPS 并将 HTTP 请求重定向到 HTTPS url。但是,如果您无法做到这一点,您可以使用 AudioWorklet polyfill 来完成这项工作。只需将以下行添加到 html 文件的头部:

  <script src="https://unpkg.com/@free-side/audioworklet-polyfill/dist/audioworklet-polyfill.js" type="text/javascript"></script>

已更新 ↑ 旧答案 ↓

我最初误读了你的问题,虽然你特别努力在本地主机上进行测试。以下是使用 local 服务器进行测试时的说明:

显然人们已经使用名为 ngrok 的工具成功解决了这个问题。这允许您通过 public HTTPS 端点公开本地服务。因此,如果您 运行 在端口 3000 上连接本地 HTTP 服务器,您将打开一个终端并 运行 ngrok http 3000 (遵循 ngrok 的基本安装和设置步骤) . Nrok 会分配给你一个 public URL,它将像这样显示在终端的消息中:

Forwarding                    https://<UNIQUE_ID_HERE>.ngrok.io -> http://localhost:3000

然后,您可以通过 https://<UNIQUE_ID_HERE>.ngrok.io/ 访问它,而不是通过 http://localhost:3000/ 访问您的草图页面,这应该可以解决这个 p5.sound 问题。