ChatGPT解决这个技术问题 Extra ChatGPT

Safari Web 检查器不断断开连接

我在我的 iPad 上安装了带有 iOS 8.3 的 Safari 8.0.6,在我的 Mac(10.10.3)上通过 Web Inspector 进行调试时,连接一直断开(断开时我在“开发”菜单下看不到设备名称)但可以如果我退出 safari 然后重新启动,则恢复,然后我可以再次远程刷新和检查。

这似乎是一个非常普遍的问题。有人建议更换电缆,但我没有任何运气。当这种情况发生在我身上时,我只需拔下并重新插入 iPad 中的电缆,它比重新启动 Safari 更快一点,也稍微不那么烦人。
@enifeder 感谢您的评论,是的,更换电缆也没有帮助我,我之前想知道是否有一些 javascript 错误会中断连接
经常发生在每个人身上。这是一个 Safari 错误。
看来这个问题已经随着 Safari 9.0 的发布而得到解决。我昨天反复遇到这个问题,但今天安装 Safari 9.0 后,我在调试我的科尔多瓦应用程序时没有看到 Safari 断开连接
我正在使用 Safari 10.0 体验这个...

C
Community

有几件事可以尝试:

1. 在 Xcode 模拟器上测试:

在 Xcode 中打开 iPhone 模拟器并使用 Safari Web Inspector 进行调试。

旁注:也许您需要下载 Safari Technology Preview

2. 在您的设备上重置您的位置和隐私设置。

设置 > 通用 > 重置 > 重置位置和隐私

3.在真机上调试

使用此配置,它似乎现在可以工作。

iPhone X、iOS 版本 12.1.3 macOS Mojave 版本 10.14.2 (18C54) Safari 版本 12.0.2 (14606.3.4)

编辑 2019.08.13

设置 -> Safari -> 高级 -> 检查 Web 信息是否已打开。

它突然关闭,我无法通过 Web Inspector 连接。打开后,它起作用了。

对于其他设备/版本,请进一步阅读(也许您可以减小构建大小)。

编辑:2018.09.20

@Chet 发现,Web Inspector 因 JS 文件和地图文件过大而不断断开连接

https://stackoverflow.com/a/52338231/4641479

Github 上的问题:

https://github.com/google/ios-webkit-debug-proxy/issues/275

https://github.com/google/ios-webkit-debug-proxy/issues/274

我可以在具有生产版本(1.8 MB + 2.4 MB 文件)的真实设备上确认这一点,Safari Web Inspector 始终保持连接。

https://i.stack.imgur.com/iEbMg.png

由于对于开发版本,它不是:

https://i.stack.imgur.com/Oox3U.png

在我的网络检查员很少工作并且经常只是停止工作之前 - 但仍然是开放的。 Safari 更新后,网络检查器会立即打开和关闭。如果遇到这样的问题..

这将起作用:

步骤 1. 获取最新的 Safari 浏览器

野生动物园:11.1 (12605.1.33.1.2)

https://developer.apple.com/safari/download

macOS Sierra 和 OS X El Capitan(我假设 macOS high Sierra 也受支持)

也许您需要下载 Safari Technology Preview

第 2 步:重置您的位置和隐私设置

在您的设备上转到:

设置 > 通用 > 重置 > 重置位置和隐私

来源:https://forums.developer.apple.com/thread/87181

第 3 步。连接您的设备

在 OS X 上打开 Safari 如果您使用 USB 数据线连接了 iPhone 设备,请先断开它。现在插入。

在 OS X Safari 上,转到:

开发 > 设备名称 > 申请开发

现在在您的手机上有一个权限问题。选择信任,现在您可以选择设备 safari 上的打开选项卡并进行调试。

调试愉快!

现在网络检查器保持连接。


我真的非常感谢你!!第 2 步。像魅力一样为我工作 <3
第一次工作,但再次出现同样的问题。
stackoverflow.com/a/51224913/694609 清空缓存为我解决了这个问题!
OSX Safari 没有“开发者”菜单项
设备上的“设置 > 常规 > 重置 > 重置位置和隐私”对我有用!
R
Rego Sen

您是否在 iPhone 上运行了很多后台应用程序?杀了他们再试一次。

我们在 WWDC 上向 Apple 开发人员展示了这个问题,他们怀疑这是由于 iPhone 的内存限制造成的。果然,杀死我们的大多数后台应用程序为我们解决了这个问题。


太棒了,我真的不希望这个选项,但它有帮助
因此,接受答案的重置隐私和这个似乎都对我有用。但是,这样做很好,而不是重置隐私设置,然后必须不断地被every.single.app 唠叨以允许某些事情。
谢谢!这在 2021 年 8 月对我有用。我以为我需要下载 Safari 的开发者版本。
我只打开一个应用程序,一个要调试的应用程序。
哇这行得通!
S
Shashank Agrawal

工作解决方案(截至 2020 年 3 月 24 日)

好吧,经过如此多的试验并打开了数千篇博客文章以找出解决方案,我设法让它工作,没有一个失败案例。

对我来说,这一直是我的 Ionic+Cordova 应用程序的问题。

当我运行一个简单的 Cordova 或 Ionic 应用程序时,当我看到这个问题(Safari 断开连接)不存在时,我的潜意识开始思考这个问题。然后突然间,我尝试了另一件事,它奏效了。

基本上,当任何文件的大小太大(不确定限制)时,Safari 网络检查器会断开连接。也许,一些图像、一些脚本和 CSS。就我而言,它曾经是因为 JavaScript 及其源映射文件。

因此,当我开始在没有源映射的情况下运行我的 iOS 应用程序时,问题就消失了。为此,我所要做的就是将 --source-map=false 传递给我的 ionic cordova commands,例如:

ionic cordova run ios --source-map=false
ionic cordova run ios -lc --source-map=false

我写了一篇关于这个的小文章来详细阐述这个https://medium.com/wizpanda/a-small-tip-to-speed-up-development-with-angular-or-ionic-d5764f639c0c

原始答案

此处列出的大多数答案对我有用了一段时间,但几个小时后它们也停止了工作,并且我的 Safari Web 控制台在打开时再次断开连接。

其他一些对我有用的选项:

选项 1 - 从 Safari 清空缓存

Safari on MacOS -> Develop -> Empty Cache

选项 2 - 清除受信任的计算机

On iOS Device -> Settings -> Developer -> Clear Trusted Computers 然后重新连接 USB 电缆,然后再次尝试调试

选项 3 - 让调试器成为傻瓜(截至 2019 年 1 月 14 日)

这个解决方案现在已经工作了很长时间。由于这是与 iOS 和 Mac 之间的连接相关的问题,所以我打开了我的控制台应用程序并保持我的 iPhone 处于选中状态。 (这以某种方式让我的 iOS 设备连接到我的 Mac)

然后在 Safari 上打开开发人员的控制台对我来说很好,无需断开连接。

选项 4 - 通过 Xcode 运行

这也是一种解决方法,也是一种查看其功能的技巧。您基本上可以通过 ionic cordova prepare ios 准备您的 iOS 应用程序,然后使用 Xcode 运行该应用程序并将其部署到您的 iPhone。

至少,我可以看到控制台日志,有时,它甚至可以与 Safari 网络检查器一起使用。

选项 5 - 在 iPhone 模拟器上运行

我认为这是最有效的解决方案。当您的系统没有运行太多应用程序时,此选项适用,因为启动模拟器会占用大量系统资源。

基本上,不是在真实设备上运行您的应用程序,而是通过 Xcode 在 iPhone 模拟器中运行您的应用程序并在您的 Safari Web 检查器中正常调试它,并且不会发生此问题。

这可能是因为传输到 Safari 检查器的文件来自系统本身。


清空缓存也为我修复了它。
到目前为止,第三种选择对我来说似乎是最可靠的。
第三个是保证的。控制台在您的 macOS 上可用,请使用聚光灯。
第二个选项立即适用于我的两个设备(5s 和 Xs)。
选项 3 对我来说似乎是一个救命稻草 - 即使拥有更大的源地图也能连接的想法是首先连接到设备上的任何小应用程序,然后才切换到同一设备上的另一个应用程序/选项卡。谢谢!
D
David Wheaton

听起来很奇怪,但可能是由于电池已满触发断开连接:https://forums.developer.apple.com/thread/92290

当 Iphone 的电池充满时,似乎会发生断开连接。 (所以目前我们在检查时打开闪光灯和相机以杀死电池......)


这可能就是您来此 SO 帖子的原因。上面的答案对我有帮助。
我以为这是我的罪魁祸首,但事实并非如此。所以要注意这可能不是问题。
r
reZach

这仅对物理设备是必需的。如果设备的电池已满,则 Safari 可以强制断开物理设备的连接。 (“电池满了?那么,让我们断开你的连接,因为你不再需要充电了——你的调试会话也开始了……”)

您需要在 Develop > [device] 中选择 通过网络连接,然后将调试器附加到要调试的页面。如果 Safari 中没有开发菜单,请转到 Safari > Preferences > Advanced 并选择在菜单栏中显示开发菜单

https://i.stack.imgur.com/vqugl.png

如果这不起作用,您可以先尝试通过 App Store 升级您的 OS/Safari。

如果问题仍然存在,请断开您的 iOS 设备。进入您的 iOS 设备,进入 Settings > Safari > Web Inspector,然后将其关闭然后重新打开。强制退出 Safari。重新插入您的 iOS 设备并再次启动 Safari,然后通过 Safari > Develop 菜单重新连接您的 iOS 设备。


通过网络为我工作。在 Safari v11.1.2 iOS 11.4.1 上。没有网络选项,它立即崩溃。谢谢!
S
S. Roose

关闭 XCode 首先对我有帮助。


l
lindstrom1989

这一直困扰着我很长一段时间的行为非常不一致,这里有一些我发现有帮助的东西,我还在这个 here 上写了一篇博客文章。

更新 mac safari 和 ios - 我发现在它开始为我工作的两个版本中的最新版本后,Safari 之间可能存在调试不兼容性。检查 ios 中的网络检查器是否已启用 - 众所周知,升级后可以关闭此设置,请检查设置 > Safari > 高级 > 网络检查器。检查您连接的端口 - 我已经将我的端口插入一个便宜的集线器/通过苹果键盘/显示器集线器,发现直接进入 mac 效果更好。您使用的是优质电缆吗? - 我发现在调试时,没有磨损的质量更好/官方电缆具有更好的可靠性。其他值得注意的观察 - 其他人评论说,确保在 safari 中启用 cookie、启用私有模式并在 Xcode 打开时尝试影响了它的可靠性,尽管我自己没有看到这可能有助于其他人尝试。


C
Chet

我不能说我有一个解决方案,而是朝着正确方向迈出的一步。

我尝试使用 ios-webkit-debug-proxy,以便可以使用 Chrome 开发工具而不是 Safari 开发工具。

注意,为了让它工作,我可以将我的 iOS 升级到最新的 11.4.1 和 MacOS 10.13.65,然后重新安装最新版本:

brew update
brew install ios-webkit-debug-proxy
brew reinstall --HEAD libimobiledevice
brew reinstall -s ios-webkit-debug-proxy

ios_webkit_debug_proxy

运行 ios_webkit_debug_proxy 后,我能够尝试通过 chrome://inspect 连接,但它立即再次断开连接:

Listing devices on :9221
Connected :9222 to Chet's Phone (6a028994cf281be807bf80c5557c3f2eb3fbb8b0)
Invalid packet header 0x1ffffff91ffffffa0ffffff9d == .... == 26321053
Disconnected :9222 from Chet's Phone (6a028994cf281be807bf80c5557c3f2eb3fbb8b0)

但是,我们有一个线索! Invalid packet header。听起来像是某个地方的较低级别的错误。不知道在哪里提交这个,但虽然......


坐下来用控制台应用程序跟踪这个错误,也有一些新的见解,我会更新我上面的帖子
我能够为 ios-webkit-debug-proxy 创建一个复制品,它似乎与此问题相关,因为该复制品与 Safari Web Inspector 问题一致。当使用源映射未缩小时,这似乎是 javascript 源大小的问题。
你是对的!谢谢!使用 angular 的 AOT 编译器进行生产构建,main.js 大小为 1.8 MB,vendor.js 大小为 2.4 MB,没有源映射文件,无论是否连接 Xcode,它都可以一直工作。不过,我仍然想调试我的开发版本。
我也是。我正在处理 39MB 未缩小的 js 文件😂
我可以确认删除源地图为我解决了这个问题。
S
Shashank Agrawal

神奇的解决方案对我有用:

重启你的 MAC 重启你的 iPhone


重新启动 iphone 唯一可以工作至少一段时间的东西
S
Sampath

09-07-2020

在 Safari (13.1.1) 上的最新 MacOs (Catalina 10.15.5) 上仍然存在这个问题

离子/电容器解决方案:

ionic cap run ios -l --external --source-map=false

M
Miles Alden

最新的 Safari 技术预览似乎为我解决了这个问题。

https://developer.apple.com/safari/technology-preview/


Safari Technology Release 42 (Safari 11.1, WebKit 12605.1.10)开始似乎问题已解决
没有改变任何东西:(
现在检查器打开.. 并且在一秒钟内(有时或多或少)它现在关闭,而不是打开并且没有像以前那样发生任何事情。它现在仍然关闭,无法弄清楚为什么。 Safari 桌面版 11.1 (12605.1.33.1.2) => Sierra
我有同样的问题。 Safari 技术预览没有帮助
Safari Technology Release Release 70(Safari 12.1,WebKit 14607.1.13)仍然存在这个问题,所以我认为这个答案无效!
A
Asleepace

MacOS Mojave / Catalina 解决方案

对我来说,这个问题在我升级到新的 macOS Mojave 后就开始了,这可能已经在上面的某个地方提到过,但对我来说,我只需要下载为 Mojave 构建的新的“Safari 技术预览”应用程序。

Safari 下载页面

https://developer.apple.com/safari/download/

直接下载 Mojave

https://secure-appldnld.apple.com/STP/041-71285-20190604-6d0dcb17-07e5-40a0-b418-dba732cefe64/SafariTechnologyPreview.dmg


g
gk.

对我来说,使用不同的适配器和电缆解决了这个问题。每次连接时,它都应要求“信任此设备”,如智能手机上的提示,如果没有,则为电缆/适配器问题。


T
Timo

在您的 iOS 设备上使用内容拦截器(例如 1Blocker)时,请确保它对您要调试的域禁用。

禁用 1Blocker 会阻止 Web Inspector (Mac) 在打开后立即关闭,并让我重新开始工作。


T
TheTC

我知道已经有很多答案,但我想发布,因为它们现在都不适合我。但是,我的手机电池处于“低电量模式”......但由于我正在为开发而插电,我认为这没什么大不了的。但是,进入手机设置并关闭低电量模式解决了我的问题。现在 safari 不会断开连接。

只是想发布它,以防有人遇到电池电量不足的情况。


D
Dharman

离子应用的工作解决方案:

ionic cordova build ios --source-map=false

A
Alexandre Daubricourt

电容器,离子,科尔多瓦

rm -rf platforms/ios/**/*.map


L
Liam Hogan

在 macOS Monterey 上构建 Ionic Angular 项目并在 iPhone Xs 上进行预览时,我在 Capacitor 中使用实时预览时遇到了这个问题。这里有一些方法可以让我克服这个错误并继续开发......

确保您使用的是 Safari Technology Preview,而不是普通版本的 Safari。如果继续,请关闭并重新打开 Safari Technology Preview。您也可以在安装 Safari Technology Preview 后尝试使用普通版本的 Safari 进行检查。它几乎也可以用于调试。在您的设备上,打开应用程序切换器并关闭所有后台应用程序,然后再开始开发您的应用程序。在计算机上的 Safari 中切换“通过网络连接”,方法是使用:Safari 菜单中的开发 > 设备名称 > 通过网络连接。断开并重新连接设备的避雷线。确保它与计算机的连接稳定牢固。非品牌电缆可能会导致间歇性开发问题。退出您的应用程序,转到应用程序切换器并通过将其滑开来强制关闭您的应用程序。然后使用启动器中的应用程序图标重新打开它。尝试再次检查它。尝试重新启动您的计算机并再次渲染您的应用程序。经过大量的正常运行时间后,可能会有一些需要转储的累积日志数据。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅