I was upgrading my blog(ghost) from v2.x to v3.x and encountered a strange error with the ghost-cli command.

TL;DR Check compatibility of ghost-cli with nodejs version

As usual, I fired up the terminal and ran the command:

ghost update

and got the strange error.

ghost update

/usr/lib/node_modules/ghost-cli/lib/command.js:108
    static async _run(commandName, argv = {}, extensions) {
                 ^^^^

SyntaxError: Unexpected identifier
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:549:28)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.require (module.js:504:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/usr/lib/node_modules/ghost-cli/lib/bootstrap.js:6:17)

That seemed an odd error and was giving nothing for me to debug. I checked the Ghost Github issue tracker for any clues, but to my dismay it did not give me any clues either.

But after looking through the documentation, I noticed the the supported nodejs versions document here

And to my surprise, I was running nodejs v6, which is not supported by ghost anymore.

So that was the clue that I needed, and I went ahead with upgrading my nodejs version to 10.x and 🎉 it fixed the issue with the ghost-cli.

Commands to upgrade nodejs version(taken from the faq page above)

To upgrade the steps are:

# update your source list with the version of Node.js you want to upgrade to.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash

# upgrade Node/ks
sudo apt-get install -y nodejs

# force Ghost to update even if there are no new versions of Ghost,
# to trigger a re-install of dependencies.
ghost update --force

That was smooth.

Enjoy.!