🐒 Ming's Note

← Back to Concepts

PM2 ESM Pitfall

當 package.json 有 "type": "module" 時,PM2 ecosystem config 需要 .cjs extension。

Symptoms

[PM2][ERROR] File ecosystem.config.js malformated
ReferenceError: module is not defined in ES module scope

Root Cause

Node.js 根據 package.json 嘅 "type" field 決定 .js file 係 ESM 定 CJS。如果有 "type": "module".js file 會被當作 ESM,但 PM2 用 module.exports(CJS syntax)。

Solution

ecosystem.config.js 改名為 ecosystem.config.cjs

Example

mv ecosystem.config.js ecosystem.config.cjs
pm2 start ecosystem.config.cjs

Related