meteor / meteor

Meteor, the JavaScript App Platform
https://meteor.com
Other
44.29k stars 5.17k forks source link

Cordova: Failed to install, Cannot find plugin.xml #8998

Closed theodorDiaconu closed 4 years ago

theodorDiaconu commented 7 years ago

I have very strange issue:

Stack:

Total time: 1.291 secs
%% Failed to install 'cordova-plugin-geolocation':Cannot find plugin.xml for plugin "cordova-plugin-geolocation". Please try adding it again.
    at new PluginInfo (/Users/theodor/.meteor/packages/meteor-tool/.1.5.1.14ltnex++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/cordova-common/src/PluginInfo/PluginInfo.js:351:15)
    at copyPlugin (/Users/theodor/.meteor/packages/meteor-tool/.1.5.1.14ltnex++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/cordova-lib/src/plugman/install.js:669:22)
    at /Users/theodor/.meteor/packages/meteor-tool/.1.5.1.14ltnex++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/cordova-lib/src/plugman/install.js:381:17
    at _fulfilled (/Users/theodor/.meteor/packages/meteor-tool/.1.5.1.14ltnex++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/q/q.js:787:54)
    at self.promiseDispatch.done (/Users/theodor/.meteor/packages/meteor-tool/.1.5.1.14ltnex++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/q/q.js:816:30)
    at Promise.promise.promiseDispatch (/Users/theodor/.meteor/packages/meteor-tool/.1.5.1.14ltnex++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/q/q.js:749:13)
    at /Users/theodor/.meteor/packages/meteor-tool/.1.5.1.14ltnex++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/q/q.js:557:44
    at flush (/Users/theodor/.meteor/packages/meteor-tool/.1.5.1.14ltnex++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/q/q.js:108:17)
    at nextTickCallbackWith0Args (node.js:489:9)
    at process._tickCallback (node.js:418:13)
=> Errors executing Cordova commands:          

When doing:

meteor build ~/Projects/xxx-build --server=https://app.xxx.rocks --mobile-settings ./.deploy/settings.json

Sometimes it happens sometimes not. But it's annoying that the building process takes time and I have to manually check if it works or not. It works 100% of the times after I do a meteor reset. It's not related to this specific plugin as it sometimes happens with others.

It's a race-condition somewhere.

abernix commented 7 years ago

Can you reproduce this problem in older versions of Meteor?

theodorDiaconu commented 7 years ago

@abernix It happened in 1.4.x also. I remember.

derwaldgeist commented 6 years ago

This problem exists since 1.2.x. It sometimes happens if a Cordova package references another Cordova package as a dependency. I had this problems a lot with the cordova-plugin-compat package which is referenced by some others.

I tried to track this problem down some months ago and found out that Meteor somehow deletes Cordova packages during build time, although other packages depend on them. This is obviously a race condition during the Cordova build.

There are two workarounds to this, which both are not really satisfying:

In these cases, Meteor does not run into that race condition or doesn't delete the package before it is required.

derwaldgeist commented 6 years ago

Here's my old issue on that: https://github.com/meteor/meteor/issues/8196

renjithspace commented 6 years ago

SOLVED

Please try to add the plugin from GitHub repository. I had to install app-preferences plugin. So, I just did it like:

$ cordova plugin add https://github.com/apla/me.apla.cordova.app-preferences

tripflex commented 6 years ago

Just in case anybody has a problem similar to this, posting this in here just to give you troubleshooting tips:

I had this similar issue with a local Cordova plugin I was using, and turns out the problem was due to the configuration still remaining in the Cordova configuration, even though I had ran meteor remove cordova:my-cordova-plugin

What I recommend is to remove the plugin and add it back to see if that fixes it (did for me)

First, remove it through meteor: meteor remove cordova:my-cordova-plugin

Then, goto the .meteor/local/cordova-build/ directory, and run this command to list all cordova plugins: cordova plugin list

If you see that one listed, run this command to remove it from Cordova: cordova plugin rm my-cordova-plugin

Then go back to source directory: I would then run your application to see if it works (to build once first before adding back), and then add it back to the project:

meteor add cordova:my-cordova-plugin

davinderkumar commented 6 years ago

I am also getting this on Meteor 1.6.1 when I run the project second time. I have to do meter reset each time I want to rerun the project a fix would be of great help.

log:

Davinders-MBP:app davinder$ meteor run ios-device --settings=settings.json [[[[[ ~/Work/map/myaddresspin/app ]]]]]

=> Started proxy.
=> Started MongoDB.
=> Errors executing Cordova commands:

While removing plugins
cordova-plugin-camera,cordova-plugin-compat,cordova-plugin-contacts,cordova-plugin-device,cordova-plugin-geolocation,cordova-plugin-googleplus,cordova-plugin-inappbrowser,cordova-plugin-ios-non-exempt-encryption,cordova-plugin-meteor-webapp,cordova-plugin-opensettings,cordova-plugin-splashscreen,cordova-plugin-statusbar,cordova-plugin-whitelist,cordova-plugin-wkwebview-engine,cordova-plugin-x-socialsharing,es6-promise-plugin,org.flybuy.cordova.background-location-services,org.flybuy.nativeutils,phonegap-plugin-push from Cordova project: Cordova error: Cannot find plugin.xml for plugin "cordova-plugin-customurlscheme". Please try adding it again. (If the error message contains suggestions for a fix, note that this may not apply to the Meteor integration. You can try running again with the --verbose option to help diagnose the issue.)

/Users/davinder/.meteor/packages/meteor-tool/.1.6.1.194wnfx.1kqp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/meteor-promise/promise_server.js:218 throw error; ^ ExitWithCode:1

derwaldgeist commented 6 years ago

@davinderkumar This happens if a Cordova plugin references another Cordova plugin and Meteor deletes the latter on startup. I could workaround this bug by adding the referenced plugin to the cordova-plugins file under .meteor. In your case, I would try to add cordova-plugin-customurlscheme there. Would be cool if this annoying bug could be fixed.

davinderkumar commented 6 years ago

hi @derwaldgeist I already did that but it keeps on throwing error same error as soon as I rerun the project. I have to reset the project, add this plugin and run the project, for each time I rerun. Its really pain. And to avoid any conflicts, I removed all meteor versions/installed on 1.6.1, removed all npm modules and installed only required ones, upgraded android to 26.x Thanks

davinderkumar commented 6 years ago

here is screenshot which shows I tried adding plugin twice but in-vain screenshot

cunneen commented 6 years ago

I have the same issue as @davinderkumar on meteor 1.6.1 (usually with phonegap-plugin-push). A meteor reset lets me build.

skirunman commented 6 years ago

We are seeing same issue with Meteor 1.6.1 on iOS on second run or build. Removing ./meteor/cordova-build solves the issue. cordova-plugin-customurlscheme@4.3.0 is in our ./meteor/cordova-plugins file so that does not solve the issue. My guess, as others have postulated, is that this is likely a race condition in the build tool.

While removing plugins                     
   cordova-plugin-actionsheet,cordova-plugin-appavailability,cordova-plugin-calendar,cordova-plugin-clozer,cordova-plugin-compat,cordova-plugin-device,cordova-plugin-dialogs,cordova-plugin-email-composer,cordova-plugin-geolocation,cordova-plugin-googleplus,cordova-plugin-inappbrowser,cordova-plugin-iosstt,cordova-plugin-meteor-webapp,cordova-plugin-splashscreen,cordova-plugin-statusbar,cordova-plugin-whitelist,cordova-plugin-wkwebview-engine,cordova-sms-plugin,phonegap-plugin-push,uk.co.workingedge.phonegap.plugin.launchnavigator
   from Cordova project:
   Cordova error: Cannot find plugin.xml for plugin
   "cordova-plugin-customurlscheme". Please try adding it again.
   (If the error message contains suggestions for a fix, note that this may not
   apply to the Meteor integration. You can try running again with the
   --verbose option to help diagnose the issue.)
lorensr commented 6 years ago

I'm seeing the same behavior as @skirunman , with the same plugin. Doesn't happen the next time after I do rm -rf .meteor/local/cordova-build

=> Started MongoDB.                           
WARNING: Attempting to install plugin cordova-plugin-splashscreen@4.0.1, but it should have a minimum version of 4.1.0 to ensure compatibility
         with the current platform versions. Installing the minimum version for convenience, but you should adjust your dependencies.
WARNING: Attempting to install plugin cordova-plugin-console@1.0.7, but it should have a minimum version of 1.1.0 to ensure compatibility with
         the current platform versions. Installing the minimum version for convenience, but you should adjust your dependencies.
WARNING: Attempting to install plugin cordova-plugin-geolocation@2.1.0, but it should have a minimum version of 2.4.3 to ensure compatibility
         with the current platform versions. Installing the minimum version for convenience, but you should adjust your dependencies.
WARNING: Attempting to install plugin cordova-plugin-statusbar@2.2.1, but it should have a minimum version of 2.3.0 to ensure compatibility with
         the current platform versions. Installing the minimum version for convenience, but you should adjust your dependencies.
=> Errors executing Cordova commands:         

   While removing plugins                     
   cordova-plugin-appversion,cordova-plugin-camera,cordova-plugin-compat,cordova-plugin-console,cordova-plugin-crosswalk-webview,cordova-plugin-customurlscheme,cordova-plugin-datepicker,cordova-plugin-device,cordova-plugin-dialogs,cordova-plugin-geolocation,cordova-plugin-inappbrowser,cordova-plugin-meteor-webapp,cordova-plugin-splashscreen,cordova-plugin-statusbar,cordova-plugin-whitelist,cordova-plugin-wkwebview-engine,cordova-universal-links-plugin,ionic-plugin-keyboard,mobi.pdf417.Pdf417Scanner,phonegap-plugin-push
   from Cordova project:
   Cordova error: Cannot find plugin.xml for plugin "cordova-plugin-customurlscheme". Please try adding it again.
   (If the error message contains suggestions for a fix, note that this may not apply to the Meteor integration. You can try running again with
   the --verbose option to help diagnose the issue.)

internal/process/next_tick.js:131
      callback();
stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

mirstan commented 4 years ago

I run rm -rf .meteor/local/cordova-build every mobile app build now, so it is hard to tell if it is still relevant.

filipenevola commented 4 years ago

When we finish updating to Cordova 9 https://github.com/meteor/meteor/pull/10810 we can review if we still need to remove this folder from time to time.

Twisterking commented 4 years ago

I just updated to Meteor 1.10.1 and Xcode 11.3.1. When I run meteor build I end up with the same error:

=> Errors executing Cordova commands:

   While removing plugins
   cordova-plugin-camera,cordova-plugin-deeplinks,cordova-plugin-dialogs,cordova-plugin-fcm-with-dependecy-updated,cordova-plugin-keyboard,cordova-plugin-meteor-webapp,cordova-plugin-mixpanel,cordova-plugin-splashscreen,cordova-plugin-statusbar,cordova-plugin-whitelist,cordova-plugin-wkwebview-engine,cordova-plugin-x-socialsharing,es6-promise-plugin,sentry-cordova
   from Cordova project:
   Cordova error: Cannot find plugin.xml for plugin "es6-promise-plugin". Please try adding it again.
   (If the error message contains suggestions for a fix, note that this may not apply to the Meteor integration. You can try running again
   with the --verbose option to help diagnose the issue.)
npm ERR! code ELIFECYCLE
npm ERR! errno 1

Any help? 😄

At the moment I am now running rm -rf .meteor/local/cordova-build at every build, but this of course makes the whole process a lot slower!

derwaldgeist commented 4 years ago

Same here. This problem still persists in Meteor 1.10.2. Why has this been closed?

I am getting this for cordova-plugin-compat.

mwarren2 commented 4 years ago

I've got this after installing Meteor 1.10.2 The rm used by @mirstan seems to have finally solved it, which seems logical since the error arrives when it removes plug-ins.

I run rm -rf .meteor/local/cordova-build every mobile app build now, so it is hard to tell if it is still relevant.

derwaldgeist commented 4 years ago

I can confirm the error persists. I have to delete the cordova-build folder every time before I run a Cordova build to prevent this, which is pretty annoying.

derwaldgeist commented 4 years ago

I have opened a new issue for this, as it hasn't been resolved so far.

Maudini commented 4 years ago

Same here