React Native添加部分依赖包后出现java.net.ConnectException: Connection refused错误
React Native添加依赖后出现Android SDK连接拒绝错误
我刚创建了一个React Native项目,原本运行正常,但添加"react-native-fs": "2.20.0"后出现问题。不止这个包,部分其他包也会触发该错误,但"microsoft-cognitiveservices-speech-sdk": "1.31.0"这类包没问题。
堆栈跟踪信息
java.net.ConnectException: Connection refused at java.base/sun.nio.ch.Net.connect0(Native Method) at java.base/sun.nio.ch.Net.connect(Unknown Source) at java.base/sun.nio.ch.Net.connect(Unknown Source) at java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source) at java.base/java.net.Socket.connect(Unknown Source) at java.base/java.net.Socket.connect(Unknown Source) at java.base/sun.net.NetworkClient.doConnect(Unknown Source) at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) at java.base/sun.net.www.http.HttpClient$1.run(Unknown Source) at java.base/sun.net.www.http.HttpClient$1.run(Unknown Source) at java.base/java.security.AccessController.doPrivileged(Unknown Source) at java.base/sun.net.www.http.HttpClient.privilegedOpenServer(Unknown Source) at java.base/sun.net.www.http.HttpClient.openServer(Unknown Source) at java.base/sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source) at java.base/sun.net.www.protocol.https.HttpsClient.New(Unknown Source) at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source) at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source) at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.openUrl(DownloadCache.java:245) at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.downloadAndCache(DownloadCache.java:622) at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.openCachedUrl(DownloadCache.java:453) at com.android.sdklib.repository.legacy.LegacyDownloader.downloadAndStream(LegacyDownloader.java:82) at com.android.repository.impl.downloader.LocalFileAwareDownloader.downloadAndStream(LocalFileAwareDownloader.java:51) at com.android.repository.impl.manager.RemoteRepoLoaderImpl.lambda$fetchPackages$0(RemoteRepoLoaderImpl.java:138) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.base/java.util.concurrent.FutureTask.run(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source)
package.json内容
{ "name": "com.example.app", "version": "0.0.1", "private": true, "scripts": { "android": "react-native run-android", "ios": "react-native run-ios", "lint": "eslint .", "start": "react-native start", "test": "jest --coverage", "pod-install": "RCT_NEW_ARCH_ENABLED=1 bundle exec pod install" }, "dependencies": { "microsoft-cognitiveservices-speech-sdk": "1.31.0", "react": "18.2.0", "react-native": "0.72.4", "react-native-fs": "2.20.0" }, "devDependencies": { "@babel/core": "^7.20.0", "@babel/preset-env": "^7.20.0", "@babel/runtime": "^7.20.0", "@react-native/eslint-config": "^0.72.2", "@react-native/metro-config": "^0.72.11", "@tsconfig/react-native": "^3.0.0", "@types/react": "^18.0.24", "@types/react-test-renderer": "^18.0.0", "babel-jest": "^29.2.1", "eslint": "^8.19.0", "jest": "^29.2.1", "metro-react-native-babel-preset": "0.76.8", "prettier": "^2.4.1", "react-test-renderer": "18.2.0", "typescript": "4.8.4" }, "engines": { "node": ">=16" } }
解决方法
1. 检查代理配置
这个错误是Gradle连接Android SDK仓库时被拒绝,优先排查代理:
- 打开Android Studio,进入
Settings > Appearance & Behavior > System Settings > HTTP Proxy - 若使用代理,确认地址、端口、账号密码正确;不需要代理就选
No proxy,应用后同步Gradle
2. 替换国内镜像仓库
如果是网络访问受限,修改android/build.gradle,把Google、Jcenter替换为国内镜像:
buildscript { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/nexus/content/groups/public' } } } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/nexus/content/groups/public' } mavenLocal() maven { url("$rootDir/../node_modules/react-native/android") } maven { url("$rootDir/../node_modules/jsc-android/dist") } } }
3. 启用Gradle离线模式
如果已经下载过依赖,临时启用离线模式跳过网络请求:
- Android Studio中进入
File > Settings > Build, Execution, Deployment > Build Tools > Gradle - 勾选
Offline work,应用后重新运行react-native run-android
4. 调整react-native-fs版本
react-native-fs@2.20.0版本较老,可能和RN 0.72.4不兼容:
- 升级到最新版:
npm install react-native-fs@latest - 或者查看该包的release notes,选择适配RN 0.72的版本
5. 清理缓存重新构建
执行以下命令彻底清理缓存后重新安装依赖:
npm cache clean --force rm -rf node_modules package-lock.json npm install cd android && ./gradlew clean cd .. && react-native run-android
内容的提问来源于stack exchange,提问作者TRose
相关产品推荐
相关产品推荐

