Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

387
Views
run pm2 with ES modules

How can i use pm2 in combination with a package based on ES Module (type:"module") I looked into similar Questions without any useful help (some say it does not work on windows, but i am using linux)

I always receive the error:

Error [ERR_REQUIRE_ESM]: require() of ES Module /opt/app/server/lib/src/index.js not supported.
0|any| Instead change the require of index.js in null to a dynamic import() which is available in all CommonJS modules.

My ecosystem.config.js looks like:

const os = require('os');
module.exports = {
    apps: [{
        port        : 3000,
        name        : "any",
        script      : "lib/src/index.js",
        watch       : true,           
        instances   : os.cpus().length,
        exec_mode   : 'fork',         
        env: {
            NODE_ENV: "production",
        }
    }]
}

index.js is a ES module using "import" syntax. How can i tell pm2 that is should use this way of importing

about 4 years ago ยท Santiago Trujillo
1 answers
Answer question

0

To achieve this you can create an intermediary CommonJS module which loads your application from ESModule. It's possible with import function available in commonJs modules.

This is how might this look:

  • ecosystem.config.js
  • lib/src/index.cjs CommonJS entry point (for PM2).
  • lib/src/index.js ESModule entry point (for ESM-compatible tools).
  • lib/src/app.js Application code.

ecosystem.config.js:

const os = require('os');
module.exports = {
    apps: [{
        port        : 3000,
        name        : "any",
        script      : "lib/src/index.cjs", // ๐Ÿ‘ˆ CommonJS
        watch       : true,           
        instances   : os.cpus().length,
        exec_mode   : 'fork',         
        env: {
            NODE_ENV: "production",
        }
    }]
}

lib/src/index.js:

import {app} from './app.js'

app()

lib/src/index.cjs:

import('./app.js') // ๐Ÿ‘ˆ There is import function available in CommonJS
.then(({app}) => {
 app()
})

lib/src/app.js:

import {hello} from './greet.js'

export function app() {
  console.log(hello('World'))
}

lib/src/greet.js:

export function hello(name) {
  return `Hello, ${name}!`
}
about 4 years ago ยท Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
ยฉ 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!