Node.js Strapi部署报错:系统找不到指定路径(ecosystem.config.js)
解决PM2部署Windows IIS服务器时的路径找不到问题
问题描述
为Node.js Strapi应用创建ecosystem.config.js实现部署自动化,部署到外部Windows IIS服务器时指定了部署路径,但运行部署脚本返回错误:The system cannot find the path specified。
当前ecosystem.config.js配置如下:
module.exports = { apps: [{ name: 'my-app', script: './server.js', args: 'start', env_production: { NODE_ENV: "production", //PORT: 8080 }, env_development: { NODE_ENV: "development", //PORT: 3000 }, out_file: "./out.log", error_file: "./error.log", merge_logs: true, log_date_format: "DD-MM HH:mm:ss Z", log_type: "json" }], deploy : { production : { user : "user", host : "host", ref : "origin/main", repo : "git@github.com:githubrepo", path : "C:/Sites/application-folder/my-app-production", "post-deploy" : "npm install && NODE_ENV=production npm run build && pm2 startOrRestart ecosystem.config.js --env production" }, development : { user : "user", host : "host", ref : "origin/main", repo : "git@github.com:githubrepo", path : "C:/Sites/application-folder/my-app-staging", "post-deploy" : "npm install && NODE_ENV=development npm run build && pm2 startOrRestart ecosystem.config.js --env development" } } };
已知信息:
- 在Windows IIS上可正常导航到目标路径
- SSH连接服务器后初始目录为
C:\Users\User - 尝试将
path改为相对路径../../Sites/application-folder/my-app-staging,仍报相同错误
可能的原因及解决方法
1. 修正Windows路径格式
PM2部署模块在处理Windows路径时,对正斜杠/的兼容存在问题,需替换为Windows原生反斜杠\(JS字符串中需转义为\\):
// 生产环境路径修改 path : "C:\\Sites\\application-folder\\my-app-production", // 开发环境路径修改 path : "C:\\Sites\\application-folder\\my-app-staging",
2. 检查路径权限与存在性
- 权限验证:确认SSH登录的
user账户拥有C:\Sites\application-folder及其子目录的读写权限,IIS可访问不代表SSH用户有对应权限。 - 父目录存在性:PM2仅会创建最终部署目录,若父目录(如
C:\Sites\application-folder)不存在,需手动创建后再执行部署。
3. 修正相对路径基准
PM2部署的相对路径基于SSH初始目录C:\Users\User,Windows下相对路径需用反斜杠,正确写法为:
path : "..\\..\\Sites\\application-folder\\my-app-staging"
不过更推荐使用绝对路径,避免层级计算错误。
4. 修复Post-deploy命令中的路径引用
Post-deploy命令里的pm2 startOrRestart ecosystem.config.js需确保配置文件在部署目录中存在,或直接使用绝对路径指向:
// 生产环境post-deploy修改 "post-deploy" : "npm install && NODE_ENV=production npm run build && pm2 startOrRestart C:\\Sites\\application-folder\\my-app-production\\ecosystem.config.js --env production"
5. 手动验证Git克隆路径
在SSH会话中手动执行克隆命令,排查路径或权限问题:
git clone git@github.com:githubrepo C:\Sites\application-folder\my-app-staging
若克隆失败,根据错误信息针对性解决权限或路径问题。
内容的提问来源于stack exchange,提问作者Gery
相关产品推荐
相关产品推荐

