Эмулятор Android Expo React Native не может подключиться к Express BackendAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Эмулятор Android Expo React Native не может подключиться к Express Backend

Сообщение Anonymous »

Я создаю интерфейс React Native с Expo (управляемый рабочий процесс) и бэкэнд Express, работающий локально. Мое приложение отлично работает в веб-версии (с использованием expo start --web), но когда я тестирую на эмуляторе Android, интерфейс не может подключиться в бэкэнд. Я пробовал несколько вещей, но ничего не помогает.
Что я пробовал
  • Изменен URL-адрес API в .env.development:
  • Обновлен файл app.json, чтобы разрешить трафик в виде открытого текста:

    Код: Выделить всё

    "expo": {
    "android": {
    "usesCleartextTraffic": true
    }
    }
    
    
  • Подтверждено, что серверная часть работает:
    • < li>Доступ к http://localhost:3000 в моем браузере работает нормально.
      Отключил брандмауэр/антивирус, чтобы они не блокировали запросы.
    < /li>
  • Проверил URL-адрес API в Postman с использованием моего локального IP-адреса, и он работает.
Соответствующий код для справки:
.env.development:

Код: Выделить всё

#API_URL for web
#API_URL=http://localhost:3000

#API_URL for android
API_URL=http://10.0.2.2:3000
Пример вызова API внешнего интерфейса:
auth.ts:

Код: Выделить всё

export const login = async (email: string, password: string) => {
console.log("API_URL", API_URL);
const response = await fetch(`${API_URL}/auth/login`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ email, password }),
});
const data = await response.json();
if (!response.ok) {
throw new Error(data.error);
}
return data;
};
У меня есть базовая политика cors, которая не должна влиять на это, я не думаю:

Код: Выделить всё

// CORS configuration to allow requests from the frontend
const corsOptions = {
origin: true,
credentials: true, // Allow credentials (cookies, headers)
};

app.use(cors(corsOptions));

// Handle preflight requests for all routes
app.options('*', cors(corsOptions));
Если потребуется дополнительная информация, дайте мне знать.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ss-backend
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»