云功能Firebase v1.0不会初始化

时间:2018-04-06 07:50:09

标签: firebase firebase-realtime-database google-cloud-functions

随着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

3 个答案:

答案 0 :(得分:4)

由于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现已解决。

答案 1 :(得分:1)

我遇到了同样的错误。对我来说,当我按照these instructions从Javascript项目迁移到Typescript项目时,问题似乎已得到解决。

这是一个冰雹玛丽,可能实际上不是什么修复它。尽管如此,如果你仍然坚持下去,那么做一个快速备份并试一试就不会受到伤害。

答案 2 :(得分:0)

如果您已更新NPM模块,那么您现在正在使用Stable版本的云功能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。   有关详细信息,请参阅单元测试功能。