You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

验证步骤

  1. 先在functions目录单独执行npm run lint,确认lint命令可正常运行
  2. 尝试单独部署Functions:firebase deploy --only functions
  3. 无报错后再执行完整的firebase deploy

内容的提问来源于stack exchange,提问作者Gerald Yiu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:43:19