I noticed that the builds on our CI started to fail because of the following error:
Discovered plugin "cordova-plugin-app-version" in config.xml. Adding it to the project
Installing "cordova-plugin-app-version" for android
Adding cordova-plugin-app-version to package.json
Using "requireCordovaModule" to load non-cordova module "q" is not supported. Instead, add this module to your dependencies and use regular "require" to load it.
[ERROR] Exception:
The command '/bin/sh -c ionic cordova platforms add android' returned a non-zero code: 1
Same issue happens on both iOS and Android.
After some digging, I found that cordova 9.0.0 was recently released.
There are a couple of changes related to this issue.
- GH-710 Drop Q Dependency and Use Native Promises
- GH-707 Deprecate requireCordovaModule for non-Cordova modules
My first thought was that somehow we didn't have our cordova version locked, but we did lock it to cordova@8.1.2 in our dockerfile. I also tested it on my local machine and I cordova version 8.1.2 as well. So this can't be the issue.
After looking at the logs some more, I noticed some logs like these:
cordova-android version check failed ("/app/platforms/android/cordova/version"), continuing anyways.
There were a couple of those, like 3 or 4, but the build did not stop when that happened.
I then ran the build of an older commit again, and it worked fine, probably because some layers were cached. But if I changed only a single package (I updated prettier to try it out), it caused most of the layers to be rebuilt and the build crashed with the above error.
It seems that somehow some dependencies deeper down got updated, which are causing the issue.
Thanks for your help.
I ran into this also. In my case, I needed to remove a problematic plugin cordova-plugin-camera-preview which lists "cordova": "*" as a dependency. This would install cordova 9.0.0 during ionic cordova build
I have returned to the previous version: 8.1.2.
npm install -g cordova@8.1.2
Now, it's working again.
Seems to be an issue with cordova 9.0.0, see this issue ticket.
Looks like it is already fixed and will be included in the next (9.0.1?) release.
I also get this error after updating to 9.0.0. In my case I fixed it doing a clean up and rebuilding my app. You can try the following steps.
First of all
- Update Cordova:
npm install -g cordova - Update SDK, ex:
./android/tools/bin/sdkmanager "build-tools;28.0.3" "platforms;android-28" - Add SDK path to your system (1), ex: in bashrc
export ANDROID_SDK_ROOT=~/android
(1) ANDROID_HOME is deprecated but still working
In your Cordova Project
- Remove node_modules, platforms and plugins folders
- Remove package.json and package-lock.json
- Remove from config.xml plugins/platforms/engine
- Add your platform, ex:
cordova platform add android - Add your plugins updated, ex:
cordova plugin add cordova-plugin-whitelist - Build:
cordova build
You can check a resume of your app with: cordova info
If you want to see a list of your plugin you can use: cordova plugins ls
Hope this help or at least point someone to the right direction :)
This solution worked for me - https://github.com/xpbrew/cordova-sqlite-storage/issues/856#issuecomment-497298630
For whatever plugin this error is associated with, run:
cordova platform rm ios
cordova platform rm android
cordova plugin rm <package-name>
npm i <package-name>@latest
cordova plugin add <package-name>
cordova platform add ios
cordova platform add android
remove cordova-plugin-crosswalk-webview
来源:https://stackoverflow.com/questions/55304065/cordova-error-using-requirecordovamodule-to-load-non-cordova-module-q-is-no