具有相对 URL 的 fetch() 在 React Native 上失败

fetch() with relative URL fails on React Native

如果我尝试下面的代码(React Native 应用程序,Expo)

fetch('/public/test.txt').then(function(response) {
     console.log(response);
});

我收到 'Network request failed' 错误。但是,如果我在前面加上 host:port ('http://localhost:3000/public/test.txt') 它就可以正常工作。不支持相对 URL 吗?

我觉得我很困惑 :) 在 React Native 环境中没有 "origin host" 的概念。在我的项目中恰好涉及到内容服务器,但是RN无法知道它,所以解决方案实际上是在给定环境(dev,prod)中配置客户端需要连接的主机。

在 React Native 中,不支持相对 URL。请求 url 必须是绝对的 url。 如果你只想使用一个基础 url,一种方法是创建一个配置文件,其中包含 'BASE_URL' 变量,例如。 'http://192.168.4.101:3000'。 (192.168.4.101是你电脑的ip地址)。之后,导入配置文件并编写如下内容:

fetch( config.BASE_URL+ '/public/test.txt' )