【问题标题】:"SyntaxError: Unexpected token" when compiling VS2015 ios cordova app for local device为本地设备编译 VS2015 ios cordova 应用程序时出现“SyntaxError: Unexpected token”
【发布时间】:2016-02-10 19:08:57
【问题描述】:

在本地设备上使用 VS2015(Apache Cordova 更新 6,60128.14,2016 年 2 月 3 日发布的工具)编译 cordova iOS 应用程序时,我收到以下错误:

1>  ------ Platform ios already exists
1>  ------ Updating plugins
1>  SyntaxError: Unexpected token a
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

奇怪的是,该项目只编译并成功部署到本地 iPhone 一次。下次编译时出现此错误。

【问题讨论】:

标签: ios cordova visual-studio-2015 visual-studio-cordova


【解决方案1】:

经过大量实验,VS2015 似乎试图使用先前构建遗留下来的损坏的 remote_ios.json 文件(在插件文件夹中)。 解决方法是在每次为 iOS 重建之前删除 plugins\remote_ios.json 文件。

希望 Microsoft 人员注意到此问题并在下一次更新中修复。

【讨论】:

    【解决方案2】:

    在更新 6 中修复了一个错误,该错误会导致在构建项目时创建一个错误的 ios.json 文件而根本没有插件。您的 Mac 上可能仍有一个错误的 ios.json 文件,每次构建后都会重新下载该文件。

    如果您在 VS 中运行一个 clean 然后再次构建,它将强制它进行非增量构建,因此不受任何旧构建文件的影响。试试看,如果它解决了问题,请告诉我们。

    【讨论】:

    • 我实际上做了多次清理,但并没有解决问题。我总是必须删除(本地)remote_ios.json 文件。当我在连接到 Mac 的远程 iOS 设备上执行 Debug-build-run 时,这似乎开始了。在此之前,我没有遇到这个问题。所以,也许做远程部署,然后切换回本地会破坏一些东西。
    • 我们很乐意在下一次更新中修复该错误。 remote_ios.json 文件中有什么?我们之前看到的问题是它只是命令的错误输出。如果我们能找出错误的来源,我们就可以从一开始就阻止它把它写到文件中。
    • 这里是 remote_ios.json 文件的内容。这是一个测试项目,如果您希望我上传到某个地方,请告诉我,以便您获得更多信息:amework.ngcdemo255101" }, "cordova-plugin-whitelist": { "PACKAGE_NAME": "com.ionicframework.ngcdemo255101" }, "ionic-plugin-keyboard": { "PACKAGE_NAME": "com.ionicframework.ngcdemo255101" }, "phonegap-plugin-barcodescanner": { "PACKAGE_NAME": "com.ionicframework.ngcdemo255101" } }, "dependent_plugins": {} }
    • 好的。所以看起来它可能缺少文件的开头。您会检查文件在 Mac 上是否相同?默认位置是 ~/.taco_home/remote-builds/taco-remote/builds//cordovaApp/plugins/ios.json。如果文件在 Mac 上是完整的,那就是下载问题。如果不是,那么它会被创建损坏。
    • 我试图附上文件的内容,但评论太长了。它在 Mac 上绝对完好无损。另外,我想再次强调,这只发生在这个测试项目中。这个项目唯一的独特之处在于它使用了来自 ionic.io 的 ngCordova 插件。从那以后,我在 Mac 上编译了许多其他 Cordova 项目,没有任何问题。感谢您的帮助,感谢您在 VS2015 对 Cordova 的支持中制作了一个很棒的工具!
    【解决方案3】:

    在为远程设备构建时,我遇到了同样的问题。对我来说,这似乎与使用的插件数量有关。当我有六个插件时,一切正常。我的 plugins/ios.json 看起来像这样:

    {
     "prepare_queue": {
        "installed": [],
        "uninstalled": []
     },
     "config_munge": {
        "files": {}
     },
     "installed_plugins": {
        "cordova-plugin-device": {
            "PACKAGE_NAME": "io.cordova.myappe2785d518e9f4f6ea03055878dd7a400"
        },
        "cordova-plugin-file": {
            "PACKAGE_NAME": "io.cordova.myappe2785d518e9f4f6ea03055878dd7a400"
        },
        "cordova-plugin-geolocation": {
            "PACKAGE_NAME": "io.cordova.myappe2785d518e9f4f6ea03055878dd7a400"
        },
        "cordova-plugin-media": {
            "PACKAGE_NAME": "io.cordova.myappe2785d518e9f4f6ea03055878dd7a400"
        },
        "cordova-plugin-network-information": {
            "PACKAGE_NAME": "io.cordova.myappe2785d518e9f4f6ea03055878dd7a400"
        },
        "cordova-plugin-whitelist": {
            "PACKAGE_NAME": "io.cordova.myappe2785d518e9f4f6ea03055878dd7a400"
        },
        "cordova-plugin-statusbar": {
            "PACKAGE_NAME": "io.cordova.myappe2785d518e9f4f6ea03055878dd7a400"
        }
     },
     "dependent_plugins": {}
     }
    

    当我添加七个(或更多)插件并重新构建时,plugins/remote_ios.json 被创建并看起来像这样(没有左大括号):

     6ea03055878dd7a400"
         }
     },
     "dependent_plugins": {}
    }
    

    删除第七个插件,然后重建解决了这个问题。 我检查了 Mac 上的 ~/.taco_home/remote-builds/taco-remote/builds//cordovaApp/plugins/i‌​os.json 文件,它完好无损,与我的本地机器上的相同。因此,在创建 remote_ios.json 文件的代码中一定有一些东西被截断了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 2021-01-22
      • 2017-03-29
      相关资源
      最近更新 更多