Firebase函数失败-意外的标识符:initializeIfNeeded

时间:2019-06-11 01:24:20

标签: firebase firebase-authentication google-cloud-functions

我已经部署了以下firebase函数:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

admin.initializeApp();

// other functions

exports.createProfileDocument = functions.auth.user().onCreate(async user => {
    await admin.firestore().collection('profiles').doc(user.uid).set({
        userName: user.displayName
    })
});

这是有效的,但是最近停止了,当创建一个新的用户帐户时,该功能将不会触发(日志中没有任何内容,没有错误,没有活动等)。我将依赖项更新为以下内容:

  "dependencies": {
    "firebase-admin": "^8.0.0",
    "firebase-functions": "^2.3.1",
    "firebase-tools": "^6.11.0"
  },

该函数现在可以正常启动,但由于以下错误而失败:

/user_code/node_modules/firebase-admin/node_modules/@google-cloud/firestore/build/src/index.js:740
    async initializeIfNeeded() {
          ^^^^^^^^^^^^^^^^^^

SyntaxError: Unexpected identifier
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:549:28)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.require (module.js:504:17)
    at require (internal/module.js:20:19)
    at FirebaseNamespace.get [as firestore] (/user_code/node_modules/firebase-admin/lib/firebase-namespace.js:329:29)

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

看来这是由于initializeIfNeeded()之前的async关键字导致的失败,因为这在节点6中不可用。我能够通过添加

解决问题
"engines": { "node": "8" }

到我的package.json

答案 1 :(得分:0)

您需要将节点更新到版本8.x,该版本允许异步挂接。

升级:How to update nodejs from 6.x to 8.x?