Error occurred trying to fall back to Cordova-lib execution


#1

Im getting error when want to build even on a blank starter template app
Please help

$ ionic build ios An Error occurred trying to fall back to Cordova-lib execution: TypeError: Cannot read property 'then' of undefined at Object.IonicTask.runCordova (/usr/local/lib/node_modules/ionic/lib/ionic/cordova.js:262:21) at /usr/local/lib/node_modules/ionic/lib/ionic/cordova.js:142:19 at _fulfilled (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:787:54) at self.promiseDispatch.done (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:816:30) at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:749:13) at /usr/local/lib/node_modules/ionic/node_modules/q/q.js:557:44 at flush (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:108:17) at doNTCallback0 (node.js:419:9) at process._tickCallback (node.js:348:13) Error happened [TypeError: Cannot read property 'then' of undefined] TypeError: Cannot read property 'then' of undefined at Object.IonicTask.runCordova (/usr/local/lib/node_modules/ionic/lib/ionic/cordova.js:262:21) at /usr/local/lib/node_modules/ionic/lib/ionic/cordova.js:142:19 at _fulfilled (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:787:54) at self.promiseDispatch.done (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:816:30) at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:749:13) at /usr/local/lib/node_modules/ionic/node_modules/q/q.js:557:44 at flush (/usr/local/lib/node_modules/ionic/node_modules/q/q.js:108:17) at doNTCallback0 (node.js:419:9) at process._tickCallback (node.js:348:13)


#2

I get the same here.

It works if i put sudo in front of “ionic build ios”, but then all the files generated is owned by root user, and not by my user.

So why does it work with sudo, and not without?


#3

Its because of CHOWN\CHMOD permissions of folder…
Best solution is uninstall cordova\ionic and reinstall it,if this needed chown -R username /cordovapath/


#4

I did reinstall ionic and cordova, multiple times, and ran CHOWN and CHMOD on the folders. No luck. Still the same error.

Not sure if i am running CHOWN and CHMOD on the right folders. I’ve ran it on more or less everything i can find that has to do with ionic/cordova.


Error when running 'ionic emulate ios'
#5

I am facing same issue now. Have you found any workaround?


#6

uninstall globally (use sudo if needed)
sudo npm uninstall -g ionic
sudo npm uninstall -g ionic@beta
sudo npm uninstall -g cordova

fix permissions like this: https://docs.npmjs.com/getting-started/fixing-npm-permissions

this worked for me:

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

reinstall (without sudo)
npm install -g ionic
npm install -g ionic@beta

I also installed the Android SDK


#7

Just did these steps, but unfortunately, still same error.

Thanks anyway :slight_smile:


#8

Same here… didn’t work for me either :(. But thanks anyway


#9

I found a fix. I’m on mac. so sudo is a must to install npm -g packages unless you do this: http://www.johnpapa.net/how-to-use-npm-global-without-sudo-on-osx/. The issue doesn’t seem to be with sudo though.

Looking into /usr/local/lib/node_modules/ionic/lib/ionic/cordova.js:296 code made me realize that ionic throws this error when it can’t find cordova-cli. Then, running ionic info showed Cordova CLI: Not installed. Although I installed cordova and its in standard npm path, ionic didn’t pick it up. Looking around showed that ionic works well with cordova@4.2.0.

sudo npm install -g cordova@4.2.0
ionic info > it should show Cordova CLI: 4.2.0
ionic build android

This time it worked!


Error when running 'ionic emulate ios'
#10

Yep, that did the trick! Works fine now.

Thanks for sharing.


#11

I have the same problem. Unfortunately the proposed solution did not work for me. After I installed cordova 4.2 I still get 6.0 when I type in ‘sudo version -v’.


#12

@cybernatic @a4anishm @syedtariq @larschla

I am pretty certain I’ve figured out the root cause to the issue. I ran cordova -v and saw this output -

Ross-MBP:test rossmartin$ cordova -v
/usr/local/lib/node_modules/cordova/node_modules/update-notifier/node_modules/configstore/index.js:53
				throw err;
				^

Error: EACCES: permission denied, open '/Users/rossmartin/.config/configstore/update-notifier-cordova.json'
You don't have access to this file.

I then ran

Ross-MBP:test rossmartin$ sudo chown -R rossmartin ~/.config
Ross-MBP:test rossmartin$ cordova -v
6.0.0

Now I see cordova reporting it is at 6.0.0 and can do ionic build/prepare again.

I think what happened is that the Ionic CLI did not think that the cordova CLI was installed as @a4anishm pointed out. Maybe it is possible that somewhere the Ionic CLI does a cordova -v and was getting hung up by the permission issue reading the ~/.config/configstore/update-notifier-cordova.json file.


#13

Great stuff Ross! This worked for me, thanks!


#14

Great, Thanks a lot!