Node.js v16.15.0运行Expo项目报错:ReferenceError: ReadableStream is not defined
解决Expo Web项目运行时
ReadableStream is not defined错误 问题场景
使用Node.js v16.15.0版本,通过命令npx create-expo-app@latest DoneWithIt --template blank成功创建Expo空白项目后,执行npm run web时出现如下错误:
ReferenceError: ReadableStream is not defined at Object.<anonymous> (D:\File Manager\Rough_Project\DoneWithIt\node_modules\undici\lib\web\fetch\response.js:528:3) at Module._compile (node:internal/modules/cjs/loader:1105:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Module.require (node:internal/modules/cjs/loader:1005:19) at require (node:internal/modules/cjs/helpers:102:18) at Object.<anonymous> (D:\File Manager\Rough_Project\DoneWithIt\node_modules\undici\lib\web\fetch\index.js:11:5) at Module._compile (node:internal/modules/cjs/loader:1105:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
解决方案
下面提供三种可行的解决办法,按推荐优先级排序:
升级Node.js版本(最推荐)
Node.js v16中ReadableStream属于实验性API,而v18及以上版本已将其纳入稳定支持。直接升级到Node.js v18或更高版本,然后重新执行npm install,再运行npm run web即可解决问题。降级undici库版本
如果暂时无法升级Node.js,可以锁定undici到兼容v16的版本(比如4.x系列):- 打开项目根目录的
package.json,添加resolutions字段:"resolutions": { "undici": "4.19.2" } - 执行
npm install安装依赖,之后再运行npm run web。
注:如果使用npm,需要先全局安装npm-force-resolutions工具:npm install -g npm-force-resolutions,否则resolutions字段可能不生效。
- 打开项目根目录的
启用Node.js实验性Fetch API
在Node.js v16中手动启用实验性Fetch特性,修改package.json里的scripts字段:"scripts": { "web": "node --experimental-fetch node_modules/expo-cli/build/bin/cli.js start --web" }修改后执行
npm run web即可。
内容的提问来源于stack exchange,提问作者Mishal Harish
相关产品推荐
相关产品推荐

