我用以下代码创建了一个简单的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/";
请帮助我什么问题。
答案 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。