部署Zerodha Clone的Dashboard至Vercel时遇权限拒绝错误求助
我正在开发Zerodha Clone项目(Zerodha是一家交易平台公司),项目包含Frontend、Backend、Dashboard三个子文件夹。目前Frontend已成功部署到Vercel,Backend成功部署到Render,但Dashboard部署至Vercel时失败,报错信息如下:
sh: line 1: /vercel/path0/node_modules/.bin/react-scripts: Permission denied
Error: Command "npm run build" exited with 126
已尝试的方案:
- 本地删除node_modules文件夹,重新推送代码至GitHub后再次部署;
- 检查package.json中vite是否在devDependencies内;
- 在Frontend文件夹创建.nvmrc文件设置Node版本18,并同步配置Vercel上的Node版本;
- 将package.json中的build脚本从
"vite build"修改为"npx vite build"。
可能的解决方向
核对Dashboard的package.json配置
报错提到react-scripts,但你用的是Vite框架,说明存在配置冲突:- 检查Dashboard的package.json,确认是否误引入了react-scripts依赖,若是Vite项目直接移除该依赖;
- 确保build脚本仅指向Vite相关命令,无react-scripts残留配置。
修复可执行文件权限
权限拒绝通常是node_modules内的可执行文件缺少执行权限,可在Vercel构建命令前添加权限修复:chmod +x node_modules/.bin/* && npm run build或者直接修改package.json的build脚本:
"scripts": { "build": "chmod +x node_modules/.bin/vite && vite build" }确认Vercel部署根目录
检查Vercel部署设置,确保选择的根目录是Dashboard文件夹,而非项目根目录——根目录错误会导致找不到正确的依赖和脚本,引发异常。清除Vercel构建缓存
进入Vercel控制台的Deployments页面,找到失败的部署记录,点击"Redeploy"并勾选"Clear build cache"选项,重新触发部署,避免旧缓存干扰。统一Dashboard的Node版本
在Dashboard文件夹内也创建.nvmrc文件设置Node 18,确保Vercel部署时使用的Node版本与本地一致,避免版本不兼容导致依赖安装异常。
内容的提问来源于stack exchange,提问作者Jaatboys

