Search code examples
javascriptnode.jspm2

pm2 Unexpected token import


I have a webserver that works when I use node or nodemon (e.g. "nodemon index.js"). However, when I try to use pm2 ("pm2 start index.js"), I get "SyntaxError: Unexpected token import". The full error log is below. What am I doing wrong here?

/usr/local/lib/node_modules/pm2/lib/ProcessContainerFork.js:29
import(process.env.pm_exec_path);
^^^^^^

SyntaxError: Unexpected token import 
at new Script (vm.js:51:7)
at createScript (vm.js:136:10)
at Object.runInThisContext (vm.js:197:10)
at Module._compile (internal/modules/cjs/loader.js:618:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10)
at Module.load (internal/modules/cjs/loader.js:566:32)
at tryModuleLoad (internal/modules/cjs/loader.js:506:12)
at Function.Module._load (internal/modules/cjs/loader.js:498:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:695:10)
at startup (internal/bootstrap/node.js:201:19)

Solution

  • Hit the same issue.

    pm2 released version 4.2.2 which only works with Node 10.x or better, so:

    Best solution is to upgrade your node from 9.x to 10.x or better.

    In my case I wanted to stick to node 9 so I fixed the version of pm2 to version 4.2.1

    I use npm to install pm2 in my Dockerfile:

    Changing:

    RUN npm install -g [email protected] pm2
    

    To:

    RUN npm install -g [email protected] [email protected]
    

    Will fix the issue and allow you to continue working with node 9 and pm2 4.2.1

    If you install pm2 in some other way post your install details and I can recommend how to fix.