这是完整的错误信息
Uncaught ReferenceError: process is not defined
at index.js:34
at Object../node_modules/utp/index.js (index.js:41)
at Object.options.factory (react refresh:6)
at __webpack_require__ (bootstrap:24)
at fn (hot module replacement:61)
at Object../node_modules/peer-wire-swarm/index.js (index.js:1)
at Object.options.factory (react refresh:6)
at __webpack_require__ (bootstrap:24)
at fn (hot module replacement:61)
at Object../node_modules/torrent-stream/index.js (index.js:2)
此项目是使用npx create-react-app
创建的,并通过react-scripts start
命令启动。
这是App.js
文件。
import torrentStream from "torrent-stream";
function App() {
return (
<h1>Hello World</h1>
);
}
export default App;
当我删除第一行import torrentStream from "torrent-stream";
时,一切正常。
我尝试安装react-error-overlay
但没有效果。像这样在webpack中添加新的插件:
new webpack.DefinePlugin({
process: {env: {}}
}),
将错误更改为:
Uncaught TypeError: {(intermediate value)}.hrtime is not a function
at index.js:34
at Object.../../node_modules/utp/index.js (index.js:41)
at Object.options.factory (react refresh:6)
at __webpack_require__ (bootstrap:24)
at fn (hot module replacement:61)
at Object../node_modules/peer-wire-swarm/index.js (index.js:1)
at Object.options.factory (react refresh:6)
at __webpack_require__ (bootstrap:24)
at fn (hot module replacement:61)
at Object../node_modules/torrent-stream/index.js (index.js:2)
我尝试过以下解决方案:解决方案1,解决方案2,解决方案3和解决方案4,但都没有起到任何帮助作用。 我更改了webpack配置,在
config.resolve
中添加了此回退。fallback: {
"stream": require.resolve("stream-browserify"),
"path": require.resolve("path-browserify"),
"crypto": require.resolve("crypto-browserify"),
"os": require.resolve("os-browserify/browser"),
"tty": require.resolve("tty-browserify"),
"https": require.resolve("https-browserify"),
"http": require.resolve("stream-http"),
"zlib": require.resolve("browserify-zlib"),
"constants": require.resolve("constants-browserify"),
"fs": false,
"dgram": false,
"dns": require.resolve("dns"),
"process": false
},
torrent-stream
是一个用于Node.js的模块(其中process
是预定义的全局变量),但您正在尝试在浏览器中使用它。这是行不通的。不幸的是,现在很容易混淆,因为既设计用于Node.js的模块,也设计用于浏览器的模块(或两者都可以使用)都在npm
中(以前只有Node.js的东西,但然后打包程序开始提供从node_modules
捆绑事物的能力,水变得非常混乱)。 - T.J. Crowderprocess
,那么不能在浏览器中使用。我不知道是否有一种通用的方法来确定您是否可以在浏览器中使用npm
模块,除非根据我的经验,如果它没有明确说明是针对浏览器的并且没有清晰的基于浏览器的示例,那么它可能不适用于浏览器。 - T.J. Crowder