为本地设备编译VS2015 ios cordova app时出现“SyntaxError:Unexpected token”

时间:2016-02-10 19:08:58

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

使用针对本地设备的VS2015(适用于Apache Cordova Update 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一次。在下一次编译时,会发生此错误。

3 个答案:

答案 0 :(得分:11)

经过多次实验,似乎VS2015尝试使用上一版本中遗留的损坏的remote_ios.json文件(在plugins文件夹中)。 解决方法是在每次重建iOS之前删除plugins \ _ remote_ios.json文件。

希望微软人员注意到这个问题并在下次更新时修复。

答案 1 :(得分:3)

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

如果在VS中运行clean然后再次构建,则会强制它执行非增量构建,因此不会受到任何旧构建文件的影响。尝试一下,让我们知道它是否能解决问题。

答案 2 :(得分:1)

构建远程设备时遇到同样的问题。对我来说,它似乎与使用的插件数量有关。当我有六个插件时,一切正常。我的插件/ 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文件的代码中截断某些内容。