Node.js项目本地Chromium可执行路径有效,部署后提示不存在的原因?
问题原因及解决办法
1. 操作系统架构不匹配
你本地用的是Mac系统,依赖的是chrome-mac目录下的Mac版Chromium,但部署的服务器几乎都是Linux系统——Mac的二进制文件在Linux下无法运行,且路径里的chrome-mac也不符合Linux版本的目录结构,自然找不到可执行文件。
解决:
- 登录服务器,在项目根目录执行
npx playwright install chromium,让Playwright自动适配服务器系统安装对应版本的Chromium; - 代码里可以直接移除
executablePath配置,Playwright会自动定位到正确的可执行文件路径;如果需要手动指定,可使用require('playwright').chromium.executablePath()获取内置路径。
2. 相对路径解析偏差
代码里用的是相对路径playwright/chromium-1076/...,这个路径是基于应用启动时的工作目录,而非utils/index.js所在目录。服务器上启动应用的工作目录可能和本地不同,导致路径解析错误。
解决:
用Node.js的path模块生成基于当前文件的绝对路径:
const path = require('path'); // 从utils/index.js向上两级找到playwright目录 const executablePath = path.resolve(__dirname, '../../playwright/chromium-1076/chrome-mac/Chromium.app/Contents/MacOS/Chromium');
(注:此方法仅适用于服务器和本地系统一致的情况,优先推荐解决操作系统不匹配的问题)
3. 部署时文件未同步
可能你的.gitignore文件排除了playwright目录,或者CI/CD、FTP等部署工具没有将playwright/chromium-1076目录同步到服务器。
解决:
- 检查项目根目录的
.gitignore,确保没有包含playwright相关规则; - 确认部署流程中是否包含该目录的上传,比如Git提交时执行
git add playwright/chromium-1076后再推送。
4. 可执行权限缺失
即便文件传到了服务器,Chromium二进制文件可能没有可执行权限,系统无法识别它为可执行程序。
解决:
登录服务器,定位到Chromium文件路径,执行chmod +x Chromium为其添加可执行权限。
内容的提问来源于stack exchange,提问作者karvai
相关产品推荐
相关产品推荐

