问题 为什么Cordova Browser-Sync插件无法在干净的全新Apache Cordova应用程序上运行?


注意: 此问题报告来自 用于Cordova Browser-Sync插件的官方GitHub存储库中的多方。在此发布此信息以引起对该问题的更多关注,并了解是否有人对此有任何见解或实际解决方案。


2940
2018-03-13 19:59


起源



答案:


在代码方面,似乎没有一个解决方案/修复工作。为什么?谁知道。但是现在的插件已经坏了。

而且过去的技术细节, 根据这个问题门票 在...上 GitHub存储库连接到官方插件 - 直接来自项目开发人员 - 该项目已“退役”。

我打算退休这个项目,转而支持 塔克 - livereload。   这也是基于几乎相同的代码,我现在是PM   那个项目。该项目也将有更多开发人员参与其中   将作为官方项目获得更多支持。

这会满足你的需求吗?这项目有什么用吗?   有,那taco-livereload没有?

以来 塔克 是一个 微软项目即使他们使用麻省理工学院的许可证,我也不会用10英尺的杆子来触摸它。微软的哲学思想 “拥抱,延伸和熄灭” 对于像这样的开源努力来说,这似乎太冒险了。

相反,我会转向 离子的 作为一个框架,因为它具有开箱即用的实时重载功能,现在被Cordova开发世界更广泛地采用和接受。

PS:The 内容 - 安全 - 策略解决方案在插件作者的博客上讨论 这表明设定 ws: 'unsafe-inline' 只有当实时重新加载JavaScript代码正确地在页面中注入时才会成为一个因素。来自不受信任的来源的JavaScript是在插件实际工作的情况下使进程失败的原因。并且在页面加载后,证据将在Web浏览器控制台中看到这样的错误。

但在这种情况下,代码注入不再发生并启动应用程序 cordova run browser -- --live-reload 启动默认开发服务器 localhost:8000 但随后开始浏览器同步服务器 localhost:3000 和 localhost:3001。如果此设置正常工作,它将只运行 localhost:3000;而不是港口 8000 和 3000


7
2018-03-20 14:58





我想你想念 ws:'不安全 - 内联' 在您的Content-Security-Policy定义中。

该插件需要此​​CSP才能使websocket工作。

看看那里的视频 http://blog.nparashuram.com/2015/08/using-browser-sync-with-cordova.html (在插件的readme.md中链接)以获取有关插件使用情况的详细说明。

应该:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: ws: 'unsafe-inline' https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

4
2018-03-17 23:22



对不起,但这与它无关。只有在实际重新加载JavaScript本身实际注入页面时才会出现您的问题。这根本不会发生;看看我的示例HTML看看。如果它被正确注入,它将在靠近(在?之后)结束时位于DOM的底部 </body>标签。请注意我跑步的时候 cordova run browser -- --live-reload 它启动默认的开发服务器 localhost:8000 但随后开始浏览器同步服务器 localhost:3000 和 localhost:3001。如果此设置正常工作,那将是唯一的 localhost:3000。 - JakeGould


答案:


在代码方面,似乎没有一个解决方案/修复工作。为什么?谁知道。但是现在的插件已经坏了。

而且过去的技术细节, 根据这个问题门票 在...上 GitHub存储库连接到官方插件 - 直接来自项目开发人员 - 该项目已“退役”。

我打算退休这个项目,转而支持 塔克 - livereload。   这也是基于几乎相同的代码,我现在是PM   那个项目。该项目也将有更多开发人员参与其中   将作为官方项目获得更多支持。

这会满足你的需求吗?这项目有什么用吗?   有,那taco-livereload没有?

以来 塔克 是一个 微软项目即使他们使用麻省理工学院的许可证,我也不会用10英尺的杆子来触摸它。微软的哲学思想 “拥抱,延伸和熄灭” 对于像这样的开源努力来说,这似乎太冒险了。

相反,我会转向 离子的 作为一个框架,因为它具有开箱即用的实时重载功能,现在被Cordova开发世界更广泛地采用和接受。

PS:The 内容 - 安全 - 策略解决方案在插件作者的博客上讨论 这表明设定 ws: 'unsafe-inline' 只有当实时重新加载JavaScript代码正确地在页面中注入时才会成为一个因素。来自不受信任的来源的JavaScript是在插件实际工作的情况下使进程失败的原因。并且在页面加载后,证据将在Web浏览器控制台中看到这样的错误。

但在这种情况下,代码注入不再发生并启动应用程序 cordova run browser -- --live-reload 启动默认开发服务器 localhost:8000 但随后开始浏览器同步服务器 localhost:3000 和 localhost:3001。如果此设置正常工作,它将只运行 localhost:3000;而不是港口 8000 和 3000


7
2018-03-20 14:58





我想你想念 ws:'不安全 - 内联' 在您的Content-Security-Policy定义中。

该插件需要此​​CSP才能使websocket工作。

看看那里的视频 http://blog.nparashuram.com/2015/08/using-browser-sync-with-cordova.html (在插件的readme.md中链接)以获取有关插件使用情况的详细说明。

应该:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: ws: 'unsafe-inline' https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

4
2018-03-17 23:22



对不起,但这与它无关。只有在实际重新加载JavaScript本身实际注入页面时才会出现您的问题。这根本不会发生;看看我的示例HTML看看。如果它被正确注入,它将在靠近(在?之后)结束时位于DOM的底部 </body>标签。请注意我跑步的时候 cordova run browser -- --live-reload 它启动默认的开发服务器 localhost:8000 但随后开始浏览器同步服务器 localhost:3000 和 localhost:3001。如果此设置正常工作,那将是唯一的 localhost:3000。 - JakeGould