Cloud Functions Firebase v1.0 不会初始化

Posted

技术标签:

【中文标题】Cloud Functions Firebase v1.0 不会初始化【英文标题】:Cloud Functions Firebase v1.0 won't initialize 【发布时间】:2018-09-16 04:41:01 【问题描述】:

随着 Firebase 云功能的最新更新,我在初始化应用程序以及数据库引用时遇到错误。

第一个错误: 以下应基于 Firebase 函数 v1.0 文档和示例 (https://github.com/firebase/friendlychat-web/blob/master/cloud-functions/functions/index.js)

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
admin.initializeApp(); //this fails

对于上述代码,我在 firebase 部署时收到以下错误:

Error: Error occurred while parsing your function triggers.

Error: Failed to parse app options file: Error: ENOENT: no such file or directory, open '[object Object]'
    at FirebaseAppError.FirebaseError [as constructor] (/Users/ZZZ/dummy/functions/node_modules/firebase-admin/lib/utils/error.js:39:28)
    at FirebaseAppError.PrefixedFirebaseError [as constructor] (/Users/ZZZ/dummy/functions/node_modules/firebase-admin/lib/utils/error.js:85:28)
    at new FirebaseAppError (/Users/ZZZ/dummy/functions/node_modules/firebase-admin/lib/utils/error.js:119:28)
    at FirebaseNamespaceInternals.loadOptionsFromEnvVar (/Users/ZZZ/dummy/functions/node_modules/firebase-admin/lib/firebase-namespace.js:214:19)
    at FirebaseNamespaceInternals.initializeApp (/Users/ZZZ/dummy/functions/node_modules/firebase-admin/lib/firebase-namespace.js:64:28)
    at FirebaseNamespace.initializeApp (/Users/ZZZ/dummy/functions/node_modules/firebase-admin/lib/firebase-namespace.js:362:30)
    at Object.<anonymous> (/Users/ZZZ/dummy/functions/index.js:5:7)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)

如果我传递了配置文件,这个错误就会得到解决(但它违反了 firebase 文档)

const functions = require('firebase-functions');
const admin = require('firebase-admin');
var config = 
    apiKey: "<APIKEY>",
    authDomain: "<DOMAIN>",
    databaseURL: "<URL>",
    projectId: "<PROJECTID>",
    storageBucket: "<BUCKET>",
    messagingSenderId: "<ID>"
  ;
admin.initializeApp(config);//this works

第二个错误:当我如下进行数据库引用调用时,它失败并给出错误:

const functions = require('firebase-functions');
const admin = require('firebase-admin');

var config = 
    apiKey: "<APIKEY>",
    authDomain: "<DOMAIN>",
    databaseURL: "<URL>",
    projectId: "<PROJECTID>",
    storageBucket: "<BUCKET>",
    messagingSenderId: "<ID>"
  ;
  const app = admin.initializeApp(config);

  exports.updateUserProfile = functions.database.ref('/UserProfile/userid')
    .onCreate((snapshot, context) => 
        console.log(snapshot.val());
    );

日志:

Running command: npm --prefix "$RESOURCE_DIR" run lint

> functions@ lint /Users/ZZZ/dummy/functions
> eslint .

✔  functions: Finished running predeploy script.
i  functions: ensuring necessary APIs are enabled...
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...

Error: Unexpected token o in JSON at position 1

【问题讨论】:

请编辑问题以显示失败的完整且最少的代码(不是任何有效的修改代码)。 @DougStevenson 感谢您的回复道格。我已经更新了问题 为了其他用户,我可以建议让您的问题的标题更具描述性吗? Cloud Functions Firebase v1.0 有点笼统。 Can't config Cloud Functions Firebase v1.0Cloud Functions Firebase v1.0 won't initialize 会让其他人更容易扫描,以防遇到同样的问题。 我遇到了和你一样的错误,this answer 允许我部署。 【参考方案1】:

您遇到此错误是因为 firebase CLI 版本 3.18.1 中的 bug。 尝试卸载当前版本并安装 3.18.0,这应该可以解决错误。

npm uninstall -g firebase-tools
npm install -g firebase-tools@3.18.0

更新: Firebase CLI 版本 3.18.2 已发布,issue 现已解决。

【讨论】:

他们已经发布了一个新版本 3.18.2 所以你应该更新答案不建议降级:-) github.com/firebase/firebase-tools/releases/tag/v3.18.2【参考方案2】:

我遇到了同样的错误。对我来说,当我关注 these instructions 从 javascript 项目迁移到 Typescript 项目时,问题似乎已经解决。

这有点像冰雹玛丽,实际上可能不是修复它的原因。不过,如果您仍然卡住,快速备份并试一试也无妨。

【讨论】:

【参考方案3】:

如果您更新了 NPM 模块,那么您现在使用的是云函数 v1 的稳定版本。应该对现有代码进行一些小的更改。请按照以下指南进行操作

https://firebase.google.com/docs/functions/beta-v1-diff?utm_source=email&utm_medium=email&utm_campaign=cloud_functions_v1.0

Firebase SDK for Cloud Functions 版本 1.0.0 引入了一些 API 的重要变化。主要变化,替换 带有数据和上下文参数的 event.data 格式,影响所有 异步(非 HTTP)函数。更新后的 SDK 也可以使用 使用 firebase-functions-test,一个全新的单元测试配套 SDK。 有关详细信息,请参阅单元测试函数。

【讨论】:

以上是关于Cloud Functions Firebase v1.0 不会初始化的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中为 Firebase 使用 Cloud Functions

Cloud Functions for Firebase 超时

Firebase Cloud Functions https.onCall 完成状态码:204

Cloud Functions for Firebase onWrite 超时

Easy Firebase Cloud Functions 组织

在 Firebase Cloud Functions 中创建 PDF