升级firebase-functions与Admin后部署失败,Node16仍报可选链语法错误
问题描述
将firebase-functions从3.x版本升级至4.x,firebase-admin从9.x版本升级至11.x后,部署操作无法正常完成。
部署时收到错误:
Error: There was an error deploying functions:
- Error Failed to update function
日志探索器中的详细错误信息:
Provided module can't be loaded. Is there a syntax error in your code? Detailed stack trace: /workspace/node_modules/firebase-admin/lib/app/firebase-app.js:174 this.appStore?.removeApp(this.name); SyntaxError: Unexpected token '.' at wrapSafe (internal/modules/cjs/loader.js:915:16) at Module._compile (internal/modules/cjs/loader.js:963:27) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10) at Module.load (internal/modules/cjs/loader.js:863:32) at Function.Module._load (internal/modules/cjs/loader.js:708:14) at Module.require (internal/modules/cjs/loader.js:887:19) at require (internal/modules/cjs/helpers.js:74:18) at Object.<anonymous> (/workspace/node_modules/firebase-admin/lib/app/lifecycle.js:25:24) at Module._compile (internal/modules/cjs/loader.js:999:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
已在package.json中设置Node.js引擎版本为16,但部署问题仍未解决,求解决思路。
解决思路
- 明确指定云函数运行时版本:
package.json的引擎声明可能未被Firebase部署流程正确识别,需在firebase.json的functions配置项中直接指定运行时:{ "functions": { "runtime": "nodejs16" } } - 重新安装依赖:删除本地的
node_modules文件夹和package-lock.json(或yarn.lock)文件,执行npm install重新安装依赖,避免旧环境下的依赖残留干扰新版本包的运行。 - 升级Firebase CLI:旧版本CLI可能不兼容新版本的
firebase-functions/firebase-admin,执行firebase --version检查版本,若低于当前稳定版,执行npm install -g firebase-tools完成升级。 - 强制清理部署缓存:执行
firebase deploy --only functions --force命令,强制跳过部署缓存,重新构建并上传函数代码。 - 检查代码兼容性:核对
firebase-admin11.x的官方文档,确认自身代码中是否存在调用旧版API的情况,比如部分初始化、权限相关的方法在新版本中有变更,需同步调整代码。
内容的提问来源于stack exchange,提问作者njho
相关产品推荐
相关产品推荐

