我开始间歇性地收到此错误
⬢函数:无法从源加载函数定义:FirebaseError:无法成功分析函数代码库。它可能有语法或运行时错误
启动模拟器时。向 Google 提交的错误报告推测了各种各样的事情,但尚不清楚根本原因,因此我一直在不断重新启动,直到不再抛出错误为止。现在,100% 的情况下我也会遇到这个额外的错误。经过几个小时的切换,不断地猜测和检查各种兔子洞,我不知所措。这是我在尝试启动模拟器时不断收到的错误:
TypeError: Cannot read properties of undefined (reading 'user')
at Object.<anonymous> (src/git/rep-us-functions/functions/index.js:6:34)
at Module._compile (node:internal/modules/cjs/loader:1369:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1427:10)
at Module.load (node:internal/modules/cjs/loader:1206:32)
at Module._load (node:internal/modules/cjs/loader:1022:12)
at Module.require (node:internal/modules/cjs/loader:1231:19)
at require (node:internal/modules/helpers:179:18)
at loadModule (src/functions/node_modules/firebase-functions/lib/runtime/loader.js:40:16)
at loadStack (src/functions/node_modules/firebase-functions/lib/runtime/loader.js:157:23)
at src/functions/node_modules/firebase-functions/lib/bin/firebase-functions.js:56:56
⬢ functions: Failed to load function definition from source: FirebaseError: Functions codebase could not be analyzed successfully. It may have a syntax or runtime error
这是
functions/index.js
的最小可重现版本:
admin.initializeApp();
const functions = require("firebase-functions");
exports.created = functions.auth.user().onCreate(async (user) => {
const email = user.email;
console.log(email);
return;
});
还有
functions/package.json
的内容:
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"serve": "firebase emulators:start --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log",
"build:watch": "tsc -w"
},
"engines": {
"node": "20"
},
"main": "index.js",
"dependencies": {
"firebase-admin": "^12.5.0",
"firebase-functions": "^6.0.0",
"nodemailer": "^6.9.13",
"npm": "^10.8.3"
},
"devDependencies": {
"firebase-functions-test": "^3.1.0"
},
"private": true
}
我已经让模拟器再次运行了。很难说出我在调试过程中尝试过的 1,000 种方法中的哪一种,但我始终没有再遇到这种失败。无论我的代码在幕后是否按预期运行,我都持怀疑态度。
按照其网站上当前的 Firebase 初始化说明,提供了一个空白的 Firebase 功能项目模拟器,但仍然产生此错误。我手动将最新版本的
firebase-tools
、firebase-admin
和 firebase-functions
以及从 node@18
回滚到 @20
。完成所有这些后,我现在在启动模拟器时不再看到神秘的错误消息。
解决方案: 我最好的猜测是,这与主要版本升级到
[email protected]
有关。注释表明存在一个重大更改,将默认函数版本从 v1 设置为 v2,但我已经只使用 v2,所以我不知道为什么这会导致任何问题。
版本的神奇组合:
[email protected]
[email protected]
[email protected]
[email protected]
Google 非常需要向
firebase-debug.log
添加调试跟踪,以伴随无意义的消息。我仍然不知道他们的代码内部到底出了什么问题。