Composer Lock File Not Syncing

This may or may not be an issue  but it's something that I've run into and took more time than it should have to correct. As far as I know this seems to only be a problem with Lando and may have been fixed by the time you read this.

Out of the blue I started getting the error message when I was trying to deploy an update to a Drupal site. 

The lock file is not up to date with the latest changes in composer.json, it is recommended that you run `composer update` or `composer update <package name>`.

At first I couldn't figure out why this was happening and thought that it had something to do with the build containers and artifacts. The command that the job was failing on was vendor/bin/robo job:build so I tried running it within my local Docker container

Lando ssh -c "./vendor/bin/robo job:build"

No biggie, I can just run composer update like it says and everything should be peachy keen.

lando composer update
# Nope
lando composer install
# Not the preferred way but still didn't work.
lando composer update --lock
# Nope
lando composer update --lock --no-cache
# Still no
rm composer.lock
# Now it's just gone and the following won't bring it back.
lando composer update --lock --no-cache
lando composer update --lock
lando composer install
rm -rf vendor
# Now we're getting desperate
lando composer update
# Yay! composer.json and composer.lock are sync'd.

That only fixes the problem until you need to make updates to the composer.lock file. What I ended up doing is running composer natively to update the lock file.


lando composer require drupal/pathauto
composer update --lock-file --ignore-platform-reqs

As I said previously, this may simply be an issue with my work Mac since there is no problem on my Gentoo desktop. At the very least this was a learning experience.