업데이트 후 Firebase-Functions 오류? 어떡해?

Oct 28 2020

내 firebase-functions를 업데이트했는데 이제 firebase 콘솔에서이 오류가 발생합니다. 코드는 여전히 동일하지만 이제 오류가 발생합니다.

/srv/node_modules/@google-cloud/firestore/build/src/collection-group.js:54
    async *getPartitions(desiredPartitionCount) {
          ^

SyntaxError: Unexpected token *
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:617:28)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/srv/node_modules/@google-cloud/firestore/build/src/index.js:39:28) 

이것은 내 클라우드 함수 TypeScript 소스입니다.

import * as functions from 'firebase-functions';
import admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

/********************************************************************/

exports.newChatMessage = functions.firestore
  .document('/games/{gameId}/chat/{chatId}')
  .onCreate((snap, context) => { 

    const createData = snap.data();
    if(!createData){
        return false;
    }

    const chatMessage = createData.message;
    if(!chatMessage){
        return false;
    }

    console.log('New Chat message in game: ', context.params.gameId);

    const payload = {
        notification: {
            title: 'New chat message',
            body: chatMessage,
            icon: 'ic_notification'
        }
    }

    return admin.firestore().collection(`/games/${context.params.gameId}/members`).where( 'notificationChat', '==', true ).get().then( members => {
        members.forEach( member => {
            if(member.id !== createData.user){
                return admin.firestore().doc(`/users/${member.id}`).get().then( memberdata => {
                    if( memberdata.get('firebaseToken') === '' ){
                        return memberdata.data();
                    } else {
                        return admin.messaging().sendToDevice(memberdata.get('firebaseToken'), payload).catch( error => { console.log(error) });
                    }
                }).catch( error => { console.log(error) });
            } else {
                return false;
            }
        })
    }).catch( error => { console.log(error) });

   });

누구든지 이것이 무엇인지 알고 있습니까? 내 기능에는라는 메서드가 없습니다 *getPartitions.

답변

15 Educationalapp Oct 31 2020 at 07:18

firebase-admin 및 firebase-functions를 버전 : "firebase-admin": "^ 8.10.0", "firebase-functions": "^ 3.6.1"로 다운 그레이드하면 작동합니다.

덕분에 https://stackoverflow.com/questions/64575650/firebase-functions-error-after-update-what-can-i-do#comment114208082_64575650 댓글에 이것을 게시하기 위해.

Uzbekjon Nov 30 2020 at 19:22

node를 실행중인 경우에도이 오류가 발생할 수 있습니다 v8. 노드 v10로 업그레이드 하면이 오류가 해결됩니다.

을 사용하여 노드 버전을 관리하는 경우 nvm다음을 실행합니다.

nvm install v10 --lts

firebase-admin라이브러리 를 다운 그레이드하는 것보다 더 나은 솔루션이라고 생각합니다 .