【发布时间】:2022-01-20 19:33:48
【问题描述】:
当前行为:
对 localhost 服务器的所有 API 请求都在 iOS 构建上返回 React.js 应用程序的 index.html 文件,但请求在浏览器和 PWA 构建上工作正常。
预期行为:
请求返回预期的数据(通常是 JSON)。
详情
通常,API 请求会转到 http://localhost:3000/api/[route]。在 iOS 构建中,他们将访问电容器://localhost/api/[route]
因为路由返回的是 HTML 而不是 JSON 数据,所以我收到以下错误(其中一个错误,因为每个 API 路由都有相同的错误)导致白屏:
TypeError: undefined is not a function (near '...a.map...')
我尝试将主机名(生产服务器所在的位置)添加到我的根目录中的电容器.config.json 文件中,但它仍然失败。开发 API 服务器在 localhost:3000 上运行。
尝试在配置中将服务器主机名设置为“localhost:3000”。
"server": {
"hostname": "localhost:3000"
},
"http" 不允许作为 iosScheme,如电容器配置文档中所述: 不能设置为 WKWebView 已经处理的方案,例如 http 或 https](https://developer.apple.com/documentation/webkit/wkwebviewconfiguration/2875766-seturlschemehandler)
因为该网站适用于除此 iOS 构建之外的所有其他构建,因此问题应该在这里...
如何在 iOS 构建上将我的请求路由到正确的位置?
更新
如果我将电容器.config.json 文件中的 server.url 选项设置为 https://www.website.com,我可以从生产服务器中提取数据,但是当授权检查返回 401 时,应用程序似乎挂起在初始屏幕上,我在控制台中收到的唯一类似错误的消息是响应返回了 401(如预期的那样)
【问题讨论】:
-
我们需要更多信息来提供任何支持
-
您需要什么信息?服务器在浏览器中返回正确的数据,但对于 iOS 构建,电容器的 iosScheme 似乎是问题,因为不允许使用 HTTP。 @AaronSaunders
-
本地主机上运行的服务器是什么?除非您在手机上运行服务器,否则您需要重定向到另一个地址才能使 api 工作
-
我有一个运行在全球托管站点上的生产服务器,该站点适用于 webapp 的实时版本(例如:website.com/api/[route])以及托管在 localhost 上的开发服务器.如前所述,在配置中将主机名更改为 website.com 或 localhost:5000 并再次构建应用程序不起作用。服务器是用 express.js 构建的,除了这个 iOS 构建之外,一切都可以正常工作。
-
您将需要提供比您提供的少量代码更多的代码,也许是您更改主机地址但它不起作用的示例。
标签: javascript ios reactjs ionic-framework capacitor