Cannot update meteor


I have a project which was built from 2017 and now client wants to reuse it to save time and cost but for some reason, I have to update the meteor for push notification issue.

I tried many times but still get the below issue.

=> Errors while initializing project:

While selecting package versions:
error: Conflict: Constraint babel-compiler@6.8.0 is not satisfied by babel-compiler 7.5.3.
Constraints on package “babel-compiler”:

  • babel-compiler@~7.5.2 <- top level
  • babel-compiler@7.5.2 <- ecmascript 0.14.2 <- allow-deny 1.1.0 <- mongo 1.9.0
  • babel-compiler@7.5.2 <- ecmascript 0.14.2 <- angular2-compilers 0.6.0
  • babel-compiler@7.5.0 <- standard-minifier-js 2.6.0
  • babel-compiler@7.5.0 <- minifier-js 2.6.0 <- standard-minifier-js 2.6.0
  • babel-compiler@6.8.0 <- urigo:static-html-compiler 0.1.8 <- angular2-compilers 0.6.0
  • babel-compiler@6.6.4 <- barbatus:css-compiler 0.4.1 <- angular2-compilers 0.6.0

What can I do to resolve it?

Many thanks.

first thing to try is:

meteor update --all-packages --allow-incompatible-update

Which will try to get any combination of available package versions that works together.

When you do this, it’s important to pay attention to the list of package which jumped major versions and might have breaking changes in the update. Check the details of those packages listed for issues that you will need to resolve

IMHO, the whole Meteor dependency check mechanism sucks, because it is not based on semver. I recently tried to upgrade an 1.8 app to 1.8.1 and had the very same problems. No chance to update even for such a minor minor release. After trying to figure out how to get to a working combination, I decided to revert everything back to 1.8 and wait until I have more time for an in-depth root-cause analysis.

Thank you,

I tried but still got the same error message.

yes, I tried many times but cannot. Now I have to add cordova plugin phonegap-plugin-push@2.3.0 but it doesn’t work with old meteor version because it requires android 7.0.1.

You can use raix:push, which works with older Meteor versions.

For mobile apps, the whole dependency stuff is even way worse. Many people here claim that Meteor offers excellent backwards compatibility, but I can only guess they are not using Meteor in combination with Cordova or SCSS. If you use any of these, upgrading is quite often a nightmare. Been there, experienced that. Since Tiny bought Meteor, things seem to get better, though.

1 Like

Quite often, the reason for this is that a Meteor package pins the packages to a specific version that is not compatible with the rest of your app. Fun fact: The package authors do not really have a choice to prevent this, because if they don’t use explicit versions, the app might end up with the oldest version available, due to Meteor’s silly assumption that any old version would work if the package does not specify a newer version otherwise. This was a trap I fell into pretty early in my Meteor career. So it’s actually not a bad practice to state the version explicitly. However, if the package doesn’t get updated anymore, you’re pretty much stuck. The only way to get out of this is to fork the package and patch the dependency on your own. Which I just recently did for the React accounts package, because it was not compatible with react-meteor-data anymore. In your case, I can only assume the angular2-compilers package is the cuprit.

Yes, I tried with raix:push but I received the incorrect format and I cannot find the way to convert to the correct format with meteor.

{length = 32, bytes = 0xe943c1aa f89dc77a 8f13b43c d253fd23 … d7efddd3 b1a8c39a }