Я сделал npx react-native init AwesomeProject
, чтобы создать новый проект (я следую официальному руководству по началу работы . Когда я просто запускаю npx react-native start
, а затем npx react-native run-android
, ничего не настраивая, все работает нормально. Но мне нужно сделать вызов API, поэтому я попытался скопировать и вставить пример из официального сетевого руководства (только без try / catch, чтобы я мог видеть ошибки) в приложение. js ( сразу после импорта):
async function getMoviesFromApiAsync() {
let response = await fetch(
'https://reactnative.dev/movies.json'
);
let json = await response.json();
console.log(json.movies);
return json.movies;
}
Затем прямо под ним я добавил вызов этой функции:
getMoviesFromApiAsync();
Это дает мне ошибку Network request failed
. Это полная ошибка сообщение, которое я вижу в Терминале:
Fri May 08 2020 10:23:00.325] WARN Possible Unhandled Promise Rejection (id: 0):
TypeError: Network request failed
onerror@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:28005:31
dispatchEvent@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:34133:31
setReadyState@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:33217:33
__didCompleteResponse@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:33044:29
emit@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:3420:42
__callFunction@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2748:49
http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2470:31
__guard@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2702:15
callFunctionReturnFlushedQueue@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2469:21
callFunctionReturnFlushedQueue@[native code]
Я поискал в Google и в итоге попробовал следующее:
1) Я добавил android:usesCleartextTraffic="true"
в AndroidManifest. xml
2) Я добавил кучу разрешений в AndroidManifest. xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
3) Я добавил android:networkSecurityConfig="@xml/network_security_config"
в AndroidManifest. xml
4) Я попытался установить прокси (10.0.2.2) и порт (8081), как указано в здесь
5) Я попытался удалить приложение из em ulator и его переустановка, а также очистка кеша (npx react-native start --reset-cache
)
Вроде ничего не работает. Я по-прежнему получаю то же сообщение «Ошибка сетевого запроса».
Я использую React Native 0.62.2 на эмуляторе Pixel 2 API 28, работающем Android 9.0 на macOS Catalina.