我无法使用Fetch的方法从react-native访问JSON.server中的数据

时间:2019-08-01 08:02:55

标签: react-native react-redux

我用以下代码创建了一个简单的JSON.server项目: npm install JSON-server -g

我使用以下代码运行此服务器: JSON-server --watch db.json -p 3001 -d 2000

当我在浏览器中运行该服务器时,它可以工作,但是当我用react native从该服务器中获取数据时,这将不起作用。

我的react-native的代码用于从JSON.server提取数据:

return fetch(baseUrl + "data")
  .then(
    response => {
      if (response.ok) {
        return response;
      } else {
        //error
      }
    },
    error => {
      var errmess = new Error(error.message);
      throw errmess;
    }
  )
  .then(response => response.json())
  .then(dishes => dispatch(fetchData(data)))
  .catch(error => dispatch(dataFailed(error.message)));

fetchData方法:

export const fetchData = data => ({
  data: data
});

更新1:

这是baseUrl:

export const baseUrl = "http://192.168.1.8:3001/";

请帮助我什么问题。

I have tried this question but my problem has not fixed.

2 个答案:

答案 0 :(得分:1)

我的问题是因为我的ip4地址。
如我之前所言,I have tried this question but my problem has not fixed.
我确实找到了一种从服务器获取数据的方法。

针对那些面临类似问题的人。

步骤:

1)转到https://ngrok.com/并创建帐户

2)登录

3)转到设置和安装,按照1、2的步骤进行。

4)将ngrok.exe放在您选择的文件夹中。确保文件夹位于您的PATH环境变量中。

5)遵循设置和安装的步骤3。

6)打开命令提示符,然后键入ngrok http(例如:3005)并输入。您将获得一个ngrok网址(例如:转发http://977ab183.ngrok.io

7)将此网址(例如:http://977ab183.ngrok.io/)设置为您的应用baseUrl

8)打开另一个命令提示符,指向您的应用程序目录并运行json服务器:json-server --watch db.json -p 3005 -d 2000

答案 1 :(得分:0)

您将使用 localtunnel 来使服务器在两种设备上均可以工作:

在您的开发机器上全局安装localtunnel

yarn global add localtunnel

然后,您使用json-server设置并运行模拟服务器。以下命令在本地主机和端口8000上设置模拟服务器

json-server --port 8000 ./db.json --watch

下一步,使用本地隧道将模拟服务器公开到网络上

lt --port 8000 --subdomain application-mock-server

以上命令将以

的形式返回可通过Internet访问的URL。
 https://application-mock-server.localtunnel.me.

然后将这个URL插入React Native代码库中,并且可以通过移动设备在Expo内运行的应用程序进行访问。

*查看全文here