josh_bailey4
josh_bailey4

Reputation: 111

Phonegap 3.4.0 fails to build new projects and update old projects

I recently updated phonegap, node, and npm. I have an existing project I previously built with Phonegap version 3.3.0. I then attempted to update my existing project using phonegap platform update ios and received an error stating that the '/platforms' directory does not exist.

I don't think it makes any difference, but I also tried to use the cordova command instead of the phonegap command, but I just get the same error as above. I even created a completely new project with phonegap create Test and I am able to get a project built successfully, but when I try to run/build I get a similar error: 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

Even stranger, I am able to successfully create a project with the cordova command, build ios and android platforms, and emulate the project, yet I can't do this with the phonegap command like I could before I updated.

Any help or suggestions of why this would be occurring will be helpful. Thanks!

Upvotes: 2

Views: 2307

Answers (4)

foozao
foozao

Reputation: 21

I ran into the same issue, and it looks like an error in the update script, and specifically this file:

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

The quick fix is, in the function isRootDir, to change "config.xml" to ".cordova", i.e.:

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

The old version identified the base project directory via the existence of the .cordova directory. The new version is incorrectly looking for a directory that contains these three items:

  • www/
  • config.xml
  • platforms/

config.xml should not be in the base directory, it's under www/, which is why it fails.

The script does have fail-safe, which is to look for www/config.xml. However, the way it does this is to continue traversing the tree towards root, and if at any time it finds another www/config.xml, will assume this is a better candidate for the project directory.

In your situation, I'm guessing you have a /www/config.xml off of your root directory, and PhoneGap is erroneously thinking that is your project directory.

Upvotes: 0

Lorenzo
Lorenzo

Reputation: 433

I ran into this over the weekend, have you tried:

$ mkdir project_directory/platforms

As I remember it, that solved the issue as a hotfix.

The error occured after a project was cloned from github without the platforms directory.

Upvotes: 1

josh_bailey4
josh_bailey4

Reputation: 111

Not sure if there is a bug with Phonegap 3.4.0, but I fixed my issue by uninstalling the latest Phonegap version and installing Phonegap version 3.3.0-0.19.4.

Upvotes: 3

Nurdin
Nurdin

Reputation: 23911

1- you need to 'cd' to your project and add platform first before build

cd Test

2- then add platform

iOS

phonegap platform add ios

android

phonegap platform add android

3- then you can build your project

iOS

phonegap build ios

android

phonegap build android

Upvotes: 1

Related Questions