端口 3000 用于 express,端口 8081 用于响应本机,如何发出 get 请求

Posted

技术标签:

【中文标题】端口 3000 用于 express,端口 8081 用于响应本机,如何发出 get 请求【英文标题】:port 3000 for express, port 8081 for react native, how to make get request 【发布时间】:2017-02-08 23:12:39 【问题描述】:

我正在将 React Native 用于我想要部署到 iosandroid 的头像构建器。我在我的服务器上使用 Express,它使用 localhost:3000,React Native 使用 localhost:8081。

import axios from 'axios';
import React,  Component  from 'react';
import  AppRegistry, Text  from 'react-native';
import  Container, List, ListItem, Header, Title, Content, Thumbnail  from 'native-base';
import  Action  from 'react-native-router-flux';

export default class Class extends Component 
  componentWillMount()
    axios.get('https://localhost:3000')
      .then(function (response) 
        console.log(response);
      )
      .catch(function (error) 
        console.log(error);
      );


render() 
    return (
      <Container>
        <Header><Title>Choose Race</Title></Header>
        <Content> contents here <Content>);

我在反应原生调试器中收到以下错误

Error: Network Error
    at createError (createError.js:15)
    at XMLHttpRequest.handleError (xhr.js:87)
    at XMLHttpRequest.dispatchEvent (event-target.js:172)
    at XMLHttpRequest.setReadyState (XMLHttpRequest.js:542)
    at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:378)
    at XMLHttpRequest.js:482
    at RCTDeviceEventEmitter.emit (EventEmitter.js:181)
    at MessageQueue.__callFunction (MessageQueue.js:236)
    at MessageQueue.js:108
    at guard (MessageQueue.js:46)

【问题讨论】:

【参考方案1】:

在安卓模拟器中,localhost指的是安卓系统。您使用10.0.2.2 来引用它。例如。 http://10.0.2.2:3000 (How to connect to my http://localhost web server from Android Emulator in Eclipse)

不过,在 iOS 模拟器中,localhost 确实指的是主机:How do I access the host machine itself from the iPhone simulator

在本地测试时,您可能需要执行一些特定于平台的逻辑,例如:

import  Platform  from 'react-native';

const host = Platform.select(
    ios: 'localhost',
    android: '10.0.2.2',
);

// ...
    axios.get(`http://$host:3000/`)
    // ...

【讨论】:

以上是关于端口 3000 用于 express,端口 8081 用于响应本机,如何发出 get 请求的主要内容,如果未能解决你的问题,请参考以下文章

Express 仅适用于端口 3000

如何将反应中的默认端口从 3000 更改为另一个端口?

node.js表示正在使用的socket.io端口3000

express创建的服务器,只能localhost:3000访问,公网ip无法访问,求解

如何在同一个端口上运行 express 和 socket.io

docker 端口映射被删除,映射断开问题解决