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 } ] };