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

Windows10执行firebase deploy部署Functions报ENOENT预部署错误如何解决

问题成因

  1. Windows 环境下的进程调用逻辑错误:Firebase CLI 执行predeploy钩子时,会通过spawn系统调用启动子进程,对应配置中把npm --prefix "xxx" run lint整段作为单个命令传入,CLI没有将可执行文件npm和后续参数拆分,系统会尝试查找名称为整段命令的可执行文件,自然找不到就抛出ENOENT错误。
  2. npm 可执行文件识别问题:Windows 下 npm 的实际可执行文件后缀是.cmd,如果没有显式写后缀,部分环境下spawn调用无法正确识别npm命令。
  3. 变量语法不兼容终端:配置中用的%RESOURCE_DIR%是CMD终端的变量写法,如果使用的是PowerShell终端,该变量无法被正确解析,会导致路径拼接错误。
  4. lint脚本缺失:如果functions目录下的package.json中没有定义lint对应的脚本命令,即使路径正确也会执行失败返回非0退出码。

修复方案

  • 优先修改firebase.json中的predeploy配置,显式指定npm.cmd,适配Windows环境:
{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "functions": {
    "predeploy": [
      "npm.cmd --prefix \"%RESOURCE_DIR%\" run lint"
    ]
  }
}
  • 如果使用PowerShell终端,把变量替换为PowerShell语法:
    "npm.cmd --prefix \"$env:RESOURCE_DIR\" run lint"
  • 如果不需要部署前执行lint检查,可以直接删除整个predeploy配置项,跳过该步骤即可正常部署。
  • 检查functions目录下的package.json,确认scripts字段中存在lint命令的定义,不存在的话可以自行添加或者删除predeploy配置。

原始报错信息

code: 'ENOENT',
  errno: 'ENOENT',
  syscall: 'spawn npm --prefix "D:\Project\Web\functions" run lint',
  path: 'npm --prefix "D:\Project\Web\functions" run lint',
  spawnargs: []
}

Error: functions predeploy error: Command terminated with non-zero exit code1

报错截图

报错截图

内容的提问来源于stack exchange,提问作者Taha Sami

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:15:04