const path = require("path"); const dotenv = require("dotenv"); const instances = Number.parseInt(process.env.WEB_CONCURRENCY ?? "1", 10) || 1; const { parsed: envFromFile = {} } = dotenv.config({ path: path.join(__dirname, ".env"), }); module.exports = { apps: [ { name: "DouyinArchive", script: "npm", args: "run start", cwd: __dirname, autorestart: true, restart_delay: 4000, kill_timeout: 5000, instances, exec_mode: instances > 1 ? "cluster" : "fork", // 注意:不要在生产环境 watch,否则 Next.js 写入 .next 会触发重启风暴,导致 Playwright 进程被提前关闭 watch: false, ignore_watch: [".next", ".turbo", "generated", "node_modules", ".git"], env: { // 明确开发环境可选项(如需) NODE_ENV: process.env.NODE_ENV || "development", ...envFromFile, }, env_production: { // 关键:确保应用进程中的 NODE_ENV=production,从而禁用 Next.js 的开发特性 NODE_ENV: "production", // 为避免多个实例同时拉起共享浏览器,默认单实例;如需并发,请改为独立浏览器服务 WEB_CONCURRENCY: "1", ...envFromFile, }, time: true, }, ], };