Mac端Flutter Web项目Firebase Deploy报错:非零退出码2
解决Firebase Deploy时Functions预部署Lint命令报错问题
问题核心
执行firebase deploy时,Functions预部署阶段的lint命令触发/bin/sh: --: invalid option错误,最终返回非零退出码2。Flutter环境无异常,已安装npm但问题未解决。
解决方案
1. 修复Functions目录下的package.json配置
进入项目的functions文件夹,打开package.json,检查scripts中的lint命令:
- 若命令开头带多余的
--(如"lint": "--eslint ."),直接改为"lint": "eslint ." - 确保命令无多余空格或转义错误的引号
2. 切换Shell环境(Mac默认推荐Zsh)
Mac系统中sh可能不支持部分参数格式,可切换为Zsh:
chsh -s /bin/zsh
重启终端后重新执行firebase deploy,或临时用指定Shell运行:
bash -c 'firebase deploy'
3. 修正Firebase.json的预部署配置
打开项目根目录的firebase.json,调整functions.predeploy字段:
将原格式:
"functions": { "predeploy": ["npm --prefix \"$RESOURCE_DIR\" run lint"] }
改为更简洁的路径写法:
"functions": { "predeploy": [ "cd functions && npm run lint" ] }
4. 重置Functions的npm环境
进入functions目录,执行以下命令重置依赖:
rm -rf node_modules package-lock.json npm install
验证步骤
- 先在
functions目录单独执行npm run lint,确认lint命令可正常运行 - 尝试单独部署Functions:
firebase deploy --only functions - 无报错后再执行完整的
firebase deploy
内容的提问来源于stack exchange,提问作者Gerald Yiu
相关产品推荐
相关产品推荐

