Windows环境下PM2启动NextJS应用遇Script not found错误
在Windows PowerShell中使用PM2启动Next.js应用的报错解决方法
我的Next.js应用package.json的scripts配置如下:
"scripts": { "build": "next build", "dev": "next dev", "postinstall": "prisma generate", "lint": "next lint", "start": "next start", "buildstyles": "tailwindcss -i ./src/styles/globals.css -o ./src/styles/output.css --watch", "prepare": "husky install", "prettier": "prettier --write **/*" },
按照PM2文档执行pm2 start \"npm run start\"时,WSL环境可以正常运行,但在Windows PowerShell中报错:
[PM2][ERROR] Script not found: D:\Projects\MyProject\npm run start
解决方法
方法1:使用PM2正确的命令语法
PowerShell中不需要转义引号,PM2启动npm脚本的标准格式是将npm作为命令,run start作为参数传递,执行以下命令:
pm2 start npm -- run start
这个命令会让PM2调用npm去执行start脚本,而不是把整个字符串当作文件路径查找。
方法2:使用ecosystem.config.js配置文件(推荐)
创建项目根目录的ecosystem.config.js文件,配置应用信息:
module.exports = { apps: [ { name: "my-nextjs-app", // 自定义应用名称 script: "npm", args: "run start", cwd: "D:\\Projects\\MyProject", // 替换为你的项目绝对路径 env: { NODE_ENV: "production" } } ] };
然后执行启动命令:
pm2 start ecosystem.config.js
这种方式可以避免命令行引号的兼容性问题,还能统一管理应用的环境变量、重启策略等配置。
方法3:前置排查步骤
- 先在PowerShell中手动执行
npm run start,确认应用本身可以正常启动,排除应用自身问题。 - 检查Windows环境下是否正确安装PM2,执行
pm2 --version验证,若未安装则运行npm install -g pm2全局安装。
内容的提问来源于stack exchange,提问作者avenmia
相关产品推荐
相关产品推荐

