Sometimes, this event never fires and that case can be difficult to debug. Generally, when $ionicPlatform.ready does not
fire, or the lower-level deviceready event does not fire from Cordova, it means your plugins are in
an inconsistent state.

We can't promise we'll be able to fix the issue, but we are working hard to improve the quality of the Cordova plugin community and your report helps. We aren't
able to respond individually to cordova plugin issue reports at this time.

Running into an issue where Ionic's tap and event handling system is conflicting with a 3rd party library,
such as a map widget or embedded object?

Ionic's complex event system makes it possible to build mobile apps in the browser with fast and fluid
touch events and gestures. Unfortunately, that can conflict with widgets that expect to have full control
over their own events.

To fix this, add data-tap-disabled="true" around the widget. For example:

<divid="google_map"data-tap-disabled="true"></div>

Ionic CLI

When working with Cordova and Ionic, Node is to be your best friend. Specifically, working with Node and the Command Line. Yet getting things set up often seems to be a challenge, especially when it comes to setting up things cross platform (Mac,
Windows, Linux).

Below are a few issues that are not necessarily an Ionic Framework issue, but common pitfalls seen related to Cordova, Node, NPM, Android:

Setting up the Android SDK is a complicated process for Windows and Linux.

Recently, Ubuntu has gotten an awesome tool called Ubuntu Developer Tools Center and with it you can install the Android SDK and Android Studio. I’m not going to go over the details, but you can check out this blog post and
see the steps.

The setup process for Android on Windows has been covered in depth on our YouTube tutorial.
The only thing I can add is to include installing git during your setup.

Macs tend to have the least problems when setting up an Android environment. There a few ways to handle it and this is just one of them. The end goal is to have the SDK installed, install Java, install Ant.

Install Java - This can be by going to this page.
Install Ant - The quickest way to install Apache Ant is with Homebrew.

$ brew install ant

Install the SDK - This can be done a few different ways. The one I like to use is by installing Android Studio. This will let you install an editor that comes bundled with the Android SDK. So now our SDK is in our Applications Folder.

Edit .bash_profile - So if you’ve followed the steps above, you’ll need to edit your .bash_profile to include the following. If you didn’t install Android Studio, then no problem. You’ll just need to change the path to the SDK. You want to include the SDK tools and SDK Platform-tools.

If that doesn't work, Genymotion is a great replacement. It uses a virtual machine to emulate android devices and does it nearly perfectly. One thing to remember, if you want to deploy to a genymotion device, your computer will treat it as an actual connect machine. So instead of running

If you’re a node developer, you’re probably using the latest and greatest release of node on your system. While this is great for testing apps with node, Cordova and Ionic need to have some stability. When doing anything with the command line and Ionic, always use a stable release of node.

Starting an iOS emulator from the command line is a really powerful feature. It gets rid of the need to open up Xcode and keeps a nice terminal-only workflow. But when you try to use ionic cordova emulate ios it throws an awful error.

Error: ios-sim was not found. Please download, build and install version 1.7 or greater from https://github.com/phonegap/ios-sim into your path. Or 'npm install -g ios-sim'; using node.js: http://nodejs.org/

Well this is because you need to install a utility package called ios-sim. This package allows you to access the iOS simulator from the command line. This can be installed with a simple npm install.

When you update an iOS project to a new version of Cordova, sometimes you will get an error saying it was unable to locate a plugin. You open up Xcode, try to run and build from there and get this error in your console

This can happen for a number of reasons, but the most common is manually adding files to the native project. The linking process during a build cycle gets broken and none of the native files are moved over. To fix this, delete the ios.json file in the plugins folder. This will make Cordova have to recopy all the plugin files.

In more extreme cases, sometimes a complete removal of the project is needed.

This one is pretty extreme and can cause a lot of frustration. You try to use any of the Cordova/Ionic commands and get this error.

Current Working Directory is not Cordova-based project

At this point you’re unable to do anything further with your project. So why does this happen? Various reason, but mostly something gets corrupted with your environment configuration. You can see a thread where this happened for one particular user.

For his case, the solution was to run

$ cordova create .

Basically a hidden folder that should be there wasn’t. Running that command above fixes that issue.

When Cordova pushes a new version, it’s always best to update. So you run this command to update the Cordova binaries.

$ sudo npm update -g cordova

Great, but when you try to do anything in a project, you’ll get an error. Well this is because there are actually different versions of Cordova for each platform. So from inside your project you need to run Cordova’s update command.

So you found this awesome plugin on github that you want to use for your app. So lets try to install it.

ionic cordova plugin add http://github.com/user/awesome-plugin

But then another error comes up. Whats going on? So something that Cordova doesn’t mention is that you need to have git setup for installing plugins from Github. Something like this can easily be overlooked, but thankfully it’s as easy to fix. Just visit the git website, install and set up git, and you’re good to go.