Ionic Pro builds are failing, while local builds pass…
Here’s a snippet from log of my Build ae070d, when platforms are installed by
ionic cordova prepare --no-build:
> ionic cordova prepare --no-build > cordova prepare Discovered platform "android@^6.2.3" in config.xml or package.json. Adding it to the project Using cordova-fetch for cordova-android@^6.2.3 Adding android project... Creating Cordova project for the Android platform: Path: platforms/android Package: com.payrange.ldecode Name: MyApp Activity: MainActivity Android target: android-26 Subproject Path: CordovaLib Android project created with firstname.lastname@example.org Discovered platform "browser@^4.1.0" in config.xml or package.json. Adding it to the project Using cordova-fetch for cordova-browser@^4.1.0 Error: Platform android already added.
Then later, when platform browser is prepared by
ionic cordova prepare --no-build browser --dev, it fails:
> ionic cordova prepare --no-build browser --dev --no-confirm: Platform browser is not installed! Would you like to install it? No [ERROR] Can't prepare for browser unless the platform is installed. Did you mean just ionic cordova prepare? npm ERR! code ELIFECYCLE npm ERR! errno 1
There are few unexpected issues with that:
ionic cordova prepare --no-buildtries to fetch “browser” platform and stops with “Platform android already added” - very baffling bug in Ionic! Why the heck does it try to fetch browser platform into android platform (which was indeed fetched ok prior to that)??
ionic cordova prepare --no-build browser --devtries to ask the user whether to install browser platform and then auto-answers “No” due to --no-interactive in Ionic Pro build. There are two issues with that: A. command without
... browser --devdoes not try to ask questions, while command with it asks the user - very inconsistent behavior. B. platform installs should default to “yes” in CI / --no-interactive, instead of “no”. How else the build is supposed to continue??
Some background info:
I did not have the first
ionic cordova prepare --no-build command initially, but builds were failing after auto-answering “No”. So I tried to prefetch platforms and found out that
ionic cordova prepare --no-build without specific platform name fetches all platforms and does it silently. I use
--no-build flag as ionic is built to www prior to cordova for multiple targets (–prod, --dev and --staging by means of environment variables), and redoing ionic build is a waste of time.
Any thoughts on how to build with cordova browser platform:
- So the prefetch by
ionic cordova platforms prepareworks correctly for browser platform, not confusing it with android?
ionic cordova platforms prepare browserdoes not ask a question about installing the platform?
- How can the questions (about installing missing platform) be auto-answered “yes”?