2017-06-08 35 views
6

Wygląda na to, że Cloud Functions nie obsługuje notacji Async-Await. Czy istnieje sposób, w jaki mogę używać Babel, dopóki tego nie zrobią, czy też nie zaleca się używania obietnic?Funkcje chmurowe w grze Firebase Async Await style

Moja obecna funkcja, która siedzi na węźle jest tak:

exports.getToken = async (req, res) => { 
    //1. Generate token from Braintree 
    const result = await gateway.clientToken.generate(); 

    //2. Return the client token 
    res.json(result.clientToken); 
}; 

Odpowiedz

11

Chmura funkcje uruchamia wersję LTS z node.js, który według documentation 6.9.1 jest w tej chwili w czasie. węzeł 6.9.1 obsługuje EcmaScript 6, który does not include async/await.

Można jednak napisać swój kod w TypeScript i przenieść go do ES5/ES6, który skutecznie przekształci wykorzystanie asynchronizacji/czekania w obietnice. Wyszukiwarka internetowa sugeruje, że być może this plugin można użyć do pomocy Babelowi z podobną transpozycją.

EDYCJA: Warto zauważyć, że interfejs Firebase CLI umożliwia teraz zainicjowanie nowego projektu Cloud Functions za pomocą native TypeScript support, który zespół Firebase zaleca obecnie programistom.

0

Zamiast transpile maszynopis, mam transpiled mój javascript po obserwować tą very nice post i przyjrzeć this repository

Zasadniczo można zrobić:

npm install -g @babel/cli @babel/core @babel/preset-env 

Tworzenie .babelrc plików wewnątrz folderu projektu

{ 
    "presets": [ 
    ["@babel/env", { 
     "targets": { 
     "node": "6.11.5" 
     } 
    }] 
    ] 
} 

Przenieś folder "funkcje" do folderu "firebaseFunctions", a następnie uruchom

babel firebaseFunctions --out-dir functions --copy-files --ignore firebaseFunctions/node_modules 

Albo uruchomić to polecenie dla każdego pliku, który chcesz transpile

babel originalfile.js --out-file transpiledfile.js 
Powiązane problemy