本地托管的 HTTPS 站点给出了关于 websocket 的 Chrome 错误(使用 ParcelJS 包时)

Locally hosted HTTPS site gives Chrome error about a websocket (when using ParcelJS bundles)

我没有在此网页上使用 Web 套接字,但是 -

我试图理解为什么 Chrome 控制台打印以下内容 "error"(我使用引号是因为它不会产生任何影响)。只有当我在 HTTPS 站点而不是 HTTP 站点上托管时才会出现错误(正在使用我计算机本地的同一 IIS 服务器)。

(并且有一个有效的 TLS/SSL 证书)m,我不知道为什么要查看端口 61396..

hmr-runtime.js:29 WebSocket connection to 'wss://ysg4206.draper.com:61396/' failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR
parcelRequire.../../../node_modules/parcel-bundler/src/builtins/hmr-runtime.js @ hmr-runtime.js:29

参见:https://github.com/parcel-bundler/parcel/issues/3286

但解决方案的要点是 HMR 用于开发热模块重新加载。如果你有不同的实时重载方式(比如 VSCODE 实时服务器)那么你应该

This is part of the hot module reloading feature. You can disable it via --no-hmr. Otherwise, you'll have to proxy the websocket through your IIS proxy as well (if I understood your setup correctly).

来自https://parceljs.org/hmr.html

Hot Module Replacement (HMR) improves the development experience by automatically updating modules in the browser at runtime without needing a whole page refresh. This means that application state can be retained as you change small things. Parcel's HMR implementation supports both JavaScript and CSS assets.

为此它使用 WebSockets.

你可以做三件事:

  1. 要让它消失只需禁用 hmr:parcel entry.js --no-hmr

  2. 要使用 HMR,您可以 运行 您的解决方案作为 非 https 站点或...

  3. 您可以生成自签名证书并将其与 IIS 以及 parcel 一起使用:

    parcel entry.js --cert certificate.cert --key private.key

都在这里:https://parceljs.org/cli.html