【问题标题】:Phonegap 3.4.0 fails to build new projects and update old projectsPhonegap 3.4.0 无法构建新项目和更新旧项目
【发布时间】:2014-04-12 21:01:12
【问题描述】:

我最近更新了 phonegap、node 和 npm。我有一个以前使用 Phonegap 3.3.0 版构建的现有项目。然后,我尝试使用 phonegap platform update ios 更新我现有的项目,并收到一条错误消息,指出“/平台”目录不存在。

我认为这没有任何区别,但我也尝试使用 cordova 命令而不是 phonegap 命令,但我只是得到与上面相同的错误。我什至用phonegap create Test 创建了一个全新的项目,并且我能够成功构建一个项目,但是当我尝试运行/构建时,我得到了类似的错误:Error: /platforms does not exist. Please specify an existing parent folder. [error] /Users/mftcmbp1/.cordova/lib/ios/cordova/3.4.0/bin/create: Command failed with exit code 1

更奇怪的是,我是能够使用 cordova 命令成功创建项目、构建 ios 和 android 平台并模拟项目,但我无法像更新之前那样使用 phonegap 命令执行此操作。

任何帮助或建议为什么会发生这种情况会有所帮助。 谢谢!

【问题讨论】:

    标签: node.js cordova command-line npm


    【解决方案1】:

    1- 在构建之前,您需要先“cd”到您的项目并添加平台

    cd Test
    

    2-然后添加平台

    iOS

    phonegap platform add ios
    

    安卓

    phonegap platform add android
    

    3- 然后你就可以构建你的项目了

    iOS

    phonegap build ios
    

    安卓

    phonegap build android
    

    【讨论】:

    • 当我遇到所有这些错误时,我正在项目中。进入项目目录后,我尝试构建 ios,并且 phonegap 成功检测到 iOS SDK 环境并在创建 ios 项目时出错,并出现以下错误:Error: /platforms does not exist. Please specify an existing parent folder. 如果有帮助,该命令将失败,退出代码为 1。
    • 你需要先为ios添加平台。 phonegap平台添加ios
    • 我仍然收到相同的错误“/平台不存在...”。值得注意的是,上述命令用于cordova。使用 phonegap 命令,您只需执行phonegap build ios,至少使用 Phonegap 3.3.0
    • 你能在你的问题中一步一步地解释你是怎么做的吗?
    • 我的桌面上有一个名为“HRPO”的现有项目,它是使用 Phonegap 3.3.0 构建的。我 cd 到那个目录并尝试命令cordova platform update ios,就像文档解释的那样。然后我收到一条错误消息,指出“没有这样的文件或目录/平台”。从 phonegap 3.0.0 开始,您应该能够使用这些命令进行更新,而不是创建一个全新的项目并将 www 内容从旧版本转储到新版本。也许这就是我必须做的,因为更新
    【解决方案2】:

    不确定 Phonegap 3.4.0 是否存在错误,但我通过卸载最新的 Phonegap 版本并安装 Phonegap 版本 3.3.0-0.19.4 解决了我的问题。

    【讨论】:

      【解决方案3】:

      我周末遇到了这个问题,你试过了吗:

      $ mkdir project_directory/platforms
      

      据我所知,它以修补程序的形式解决了这个问题。

      在没有平台目录的情况下从 github 克隆项目后发生错误。

      【讨论】:

      • 我可以尝试一下,但是项目中有一个平台目录
      【解决方案4】:

      我遇到了同样的问题,它看起来像是更新脚本中的错误,特别是这个文件:

      node_modules/phonegap/node_modules/cordova/src/util.js

      快速解决方法是,在函数isRootDir中,将“config.xml”更改为“.cordova”,即:

      - if (fs.existsSync(path.join(dir, 'config.xml'))) {
      + if (fs.existsSync(path.join(dir, '.cordova'))) {

      旧版本通过 .cordova 目录的存在来识别基础项目目录。新版本错误地寻找包含这三个项目的目录:

      • www/
      • config.xml
      • 平台/

      config.xml 不应该在基本目录中,它在 www/ 下,这就是它失败的原因。

      该脚本确实具有故障安全功能,即查找 www/config.xml。但是,它这样做的方式是继续遍历树到根目录,如果它在任何时候找到另一个 www/config.xml,将假定这是项目目录的更好候选者。

      在您的情况下,我猜您的根目录中有一个 /www/config.xml,而 PhoneGap 错误地认为那是您的项目目录。

      【讨论】:

      • 它并没有改变我的情况(phonegap@3.4.0)
      猜你喜欢
      • 1970-01-01
      • 2020-07-27
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      相关资源
      最近更新 更多