求解决Supabase.js与Expo SDK 53兼容问题的方案
修复Expo启动时ws包导入Node stream模块的报错
以下是几个可行的修复方案,按优先级尝试:
方案1:用browserify替代Node的stream模块
- 安装兼容浏览器/Expo环境的stream实现:
npm install stream-browserify --save-dev - 修改
metro.config.js(没有则在项目根目录新建),配置metro解析时将stream指向stream-browserify:const { getDefaultConfig } = require('@expo/metro-config'); const config = getDefaultConfig(__dirname); config.resolver.extraNodeModules = { stream: require.resolve('stream-browserify'), }; module.exports = config;
- 安装兼容浏览器/Expo环境的stream实现:
方案2:调整ws包版本
部分ws新版本对Expo环境兼容性不佳,尝试降级或升级:- 降级到稳定兼容版本:
npm install ws@7.5.9 --save - 或升级到最新兼容版本:
npm update ws
- 降级到稳定兼容版本:
方案3:彻底清除缓存重启
执行以下命令清除Expo和npm缓存后重新启动项目:npx expo start --clear rm -rf node_modules && npm install # 可选,彻底重装依赖方案4:用babel别名指定stream路径(可选)
如果方案1不生效,可通过babel配置别名:- 安装babel插件:
npm install babel-plugin-module-resolver --save-dev - 修改
babel.config.js:module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo'], plugins: [ [ 'module-resolver', { alias: { stream: 'stream-browserify', }, }, ], ], }; };
- 安装babel插件:
内容的提问来源于stack exchange,提问作者bougdx
相关产品推荐
相关产品推荐

