我正在尝试使用带有 React 的
websocket-stream
npm 包通过 websocket 流式传输麦克风音频,但它是使用 NodeJS 核心模块实现的,因此文档建议使用 Browserify 来打包模块以供浏览器使用,但我该怎么做这?我正在使用 Vite 作为我的构建工具和开发服务器,但是我可以将 Browserify 与 Vite 一起使用吗?
我已经尝试使用此命令将所有内容与 Browserify 捆绑在一起:
browserify --extensions=.jsx -t [ babelify --extensions .jsx --presets [@babel/preset-env @babel/preset-react ] ] src/main.jsx -o build/app.js
成功构建了 app.js 文件,但每当我运行开发服务器时,我都会继续收到这些错误:
Uncaught TypeError: Cannot read properties of undefined (reading 'from') at node_modules/websocket-stream/node_modules/safe-buffer/index.js
Uncaught ReferenceError: React is not defined
我想这是因为缓冲区是 NodeJS 的核心模块。我已将
app.js
包含在我的 index.html
文件中,如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
<script src="/build/app.js"></script>
</body>
</html>
这是我的
main.jsx
文件:
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.jsx";
ReactDOM.createRoot(document.getElementById("root")).render(<App />);
我的处理方式正确吗?