2015-11-28 15 views
15

Pracuję nad prostą aplikacją, używając React Native. Testuję to na urządzeniu z Androidem. Stworzyłem serwer Node.js do odsłuchiwania żądań, działa on pod numerem http://localhost:3333/. Następnie wykonuję żądanie pobrania z pliku index.android.js. Poniżej znajduje się kod.React Natywna: żądanie pobierania nie powiodło się z błędem - TypeError: Żądanie sieci nie powiodło się (...)

fetch('http://localhost:3333/', 
     { 
      'method': 'GET', 
      'headers': { 
       'Accept': 'text/plain',          
      } 
     }  
    ) 
.then((response) => response.text()) 
.then((responseText) => { 
    console.log(responseText); 
}) 
.catch((error) => { 
    console.warn(error); 
}); 

Kod do obsługi żądania na serwerze węzła jest poniżej

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 
app.use(express.static('public')); 
app.get('/', function(req, res){ 
    console.log('Request received for /'); 
    res.send("this is the response from the server"); 
    res.end(); 
}); 

Ale, żądanie pobrania nie działa. Błąd pojawia się w konsoli Chrome: TypeError: Żądanie sieci nie powiodło się (...).

Jak to działa?

Odpowiedz

27

Ponieważ Twoje urządzenie z Androidem ma swój własny adres IP, musisz wskazać adres URL na adres IP twojego komputera zamiast lokalnego hosta. Na przykład fetch('http://192.168.0.2:3333/').

+0

Dzięki! Zadziałało. – Chetan

+0

Dzwonię pod adres URL, ale wciąż pojawia się ten sam błąd. fetch ('http://private-18642-test2979.apiary-mock.com/notes/1' { sposób: 'dostać', 'nagłówki' : { 'Akceptuj': 'application/json' , } –

+0

To naprawdę nie jest URL, musisz też dodać protokół. – oblador

10

pomocą odwrotnej komenda narzędzia Android Debug Bridge (ADB):

adb reverse <remote> <local> - reverse socket connections. 
           reverse specs are one of: 
           tcp:<port> 
           localabstract:<unix domain socket name> 
           localreserved:<unix domain socket name> 
           localfilesystem:<unix domain socket name> 

Na przykład:

adb reverse tcp:3333 tcp:3333 

To sprawia localhost:3333 dostępnej z urządzenia. Możesz także użyć różnych portów. Na przykład:

adb reverse tcp:8081 tcp:3333 

To przekieruje port urządzenia 8081 do portu serwisowego 3333.

Powiązane problemy