Использование класса Node.js в облачных функциях для Firebase

Я новичок в Node.js и Firebase. Я успешно попытался развернуть некоторые облачные функции, чтобы немного их протестировать. У меня есть проект Node.js, в котором у меня есть класс, определенный как:

import * as Api from './api';

export default class MyClass {
    constructor(props) {[...]}

    someFunction(props) {
        return Api.someOtherFunction(props.arg1).then([..]).catch([..]);
    }
}

В коде Api я использую административный SDK firebase и работаю с базой данных в реальном времени.

ref.child(`users/${userId}`).set({
            id: userId,
            arg1: arg1,
            arg2: arg2
        });

Теперь проблема в том, что я хотел бы использовать MyClass в облачной функции. Я тоже много читал о ES6 в облачных функциях (например: здесь), но я не могу избавиться от сообщения об ошибке

SyntaxError: неожиданный импорт токена

Я попытался преобразовать в операторы require, но не могу требовать свой локальный модуль, где находится MyClass. Меня не волнует, будет ли это локальный модуль Node.js или просто какие-то классы в четкой иерархической структуре.

Я хотел бы спросить, есть ли конкретная документация по этой ситуации (я много ее искал) и / или следую ли я правильному способу структурирования своего проекта. Если ответ - «НЕТ», дайте мне несколько советов, как его структурировать.


person Lorenzo S    schedule 07.08.2017    source источник


Ответы (1)


Облачные функции (node.js) в настоящее время не поддерживают синтаксис ES6 import, вы должны использовать require().

Примеры в статье, которую вы связали, используют Babel для преобразования ES6 в ES5. Даже если вы конвертируете свои import операторы в require(), вы столкнетесь с тем фактом, что ES5 не поддерживает синтаксис class. Если вы хотите сделать то, что написано в статье, выполните следующие действия, чтобы Babel преобразовал ваш скрипт ES6 в ES5 перед его отправкой в ​​Firebase Cloud.

person Soviut    schedule 07.08.2017