使用命令 cordova s​​erve 时如何添加 Live Reload?

How to add Live Reload when using the command cordova serve?

我正在使用此命令在浏览器中打开我的应用程序:cordova serve 但是当我更新我的代码时它不会自行刷新。我该怎么做?

我曾尝试使用 phonegap serve 代替,它具有实时重新加载功能,但它不断向我发送警报并使我的浏览器崩溃。

所以,如果你能告诉我如何解决这两个问题中的任何一个,那将是非常好的。

如果您使用 phonegap serve 并且看到 JavaScript 提示,则需要添加一个代码段以防止应用程序加载本机级 JavaScript 代码。

替换<script type="text/javascript" src="phonegap.js"></script>

<script type="text/javascript">
    if (!navigator.userAgent.toLowerCase().match('chrome')) {
        document.write("<script src='phonegap.js'><\/script>");
    }
</script>

请注意,这对 cordova.jsphonegap.js 都有效(它们应该是同一个文件)

您可以尝试 Cordova Browsersync plugin. Instructions to use the plugin are in the plugin's repo

使用 cordova plugin add cordova-plugin-browsersync 添加此插件后,您只需使用 cordova run -- --live-reload 即可开始实时重新加载。请注意,如果您有多个设备,这也会启用同步滚动和点击。

最简单的解决方案就是使用 phonegap serve 而不是 cordova serve。只要您安装了 phonegap,即使您仅使用 cordova 构建应用程序,它也能正常工作。

phonegap serve 为您提供一个 IP 地址,您可以通过浏览器或 phonegap 开发者应用程序访问该地址。两者都非常方便,而且确实有效,这总是一个加分项。

您可以直接使用browser-sync,无需cordova插件。按照以下步骤

  • npm install -g browser-sync
  • platform/android/platform_www的内容复制到www
  • 将以下内容添加到 config.xml:<allow-navigation href="http://<YOUR-IP>:3000" />
  • 将 base-href(如果 angular 项目)设置为 http://<YOUR-IP>:3000/index.html
  • 运行 browser-sync -w -server 里面 www
  • 更新内容安全策略以从 YOUR-IP:3000 执行 JS 和资产。还允许 webscokets (ws) 用于浏览器同步
  • 使用 cordova 部署应用程序 运行 android

请注意,每次添加新插件时,您都必须重新部署应用程序,并使用新的 platform_www 内容更新 www 文件夹。

每次更新www,browser-sync会自动通知你的webview,刷新一样。如果您必须重新启动应用程序并且与浏览器同步的连接丢失,请将设备连接到计算机并使用 chrome 设备检查器刷新应用程序,浏览器同步将再次生效。

您也可以尝试cordova-plugin-browsersync-gen2。它基于旧的废弃插件,完全兼容最新版本的 npm 和 Cordova。

此外,此版本为以下内容添加了缺少的实时重新加载支持:

cordova run (for each platform individually)
cordova serve

cordova-plugin-browsersync 可能已过时。或者,您可以使用 watch 命令,例如:

  1. npm install watch --save-dev

  2. 转到 package.json 文件下的脚本行,然后添加:

    "dev": "观看 'cordova run browser' www"

  3. npm 运行 开发

当您在 www 文件夹下更改任何内容时,它会自动刷新页面。

示例屏幕截图: