React-native 的 ICANN 名称冲突 android

ICANN Name collision for react-native android

我有一个 ios 和 android 版本的 react-native 应用程序。两个版本都使用 webview 来访问网站。 ios 版本在指向生产网站或本地开发版本时有效。网站使用ruby on rails,开发服务器为pow.

当我 运行 android 应用程序时,它会加载,但是当它尝试访问网站的本地版本时,它 returns 出现以下错误:

console.error: "Encountered an error loading page", {"canGoForward":false,"code":-2,"canGoBack":false,"description":"net::ERR_ICANN_NAME_COLLISION","loading":false,"title":"","url":"http://my_app.dev/,"target":69}

如果我使用 localhost 而不是 my_app.dev,也会发生同样的情况。但是,当指向外部生产 url 即 my_app.com.

时,它确实有效

我尝试使用不同的 android 设备,错误变为 ERR_CONNECTION_REFUSED。第一个设备使用 android 浏览器,而第二个设备看起来使用 chrome。所以它似乎确实是浏览器特定的问题。读到这个link,我用nslookup my_app.dev算出ip地址为127.0.53.53然后输入

127.0.53.53  my_app.dev

进入/private/etc/hosts文件。但是,这仍然会产生相同的错误。我该如何解决这个问题?

解决此问题的方法是找出开发机器的 ip 地址,比如 192.168.0.33,将服务器配置为允许外部访问 my_app.192.168.0.33.xip.io,然后在 React 应用程序中,将主机 url 配置为 http://my_app.192.168.0.33.xip.io。然而这意味着运行服务器处于特殊模式,所以最好直接找到这个问题的答案。