Облачные функции Firebase - отладка с помощью VSC - PullRequest
1 голос
/ 21 октября 2019

У меня есть node проект, созданный с помощью Vue с использованием Firebase Hosting, Cloud Functions и Firestore.

Я могу развернуть локально с помощью npm run build | firebase serve. В приложении Vue я вызываю Облачную функцию с firebase.functions().httpsCallable('placeOrder').then((result) => {...})

A
Можно ли сделать так, чтобы Function call вызывает Functions emulator (работает на порту 5001), и я могу пройти по коду с точками останова?

B
Если невозможно вызвать эмулятор излокально размещенный сайт, как я могу сделать разработку Cloud Functions локально? Я прочитал кучу статей, но они, кажется, устарели. Я могу эмулировать функцию с помощью Functions Framework и получать журналы при ее вызове, но я не уверен, как подключить к ней отладчик. Кроме того, что произойдет, если Function читает / пишет Firestore? Будет ли он читать / писать эмулируемый?

Приветствия

1 Ответ

1 голос
/ 22 октября 2019

Я расскажу вам, что сработало для меня. Я люблю firebase, но использование местных эмуляторов было для меня болезненным. Я знаю, что со временем станет лучше, но пока нет. Может быть, кто-то другой может дать нам лучший подход

Используйте экспресс и обслуживайте свою функцию в порту 5001. Вы можете подключить отладчик для использования точек останова. Отметьте здесь .

Структура папок

| functions/
----| index.js
----| app.js
----| tests/
--------| app.spec.js
| serve.js

index.js

const functions = require('firebase-functions');
const app = require('./app');

module.exports.app  = functions.https.onRequest(app);

app.js

const express = require('express');

const app = express();

app.use('/', (req, res) => {
    // do stuff
});

module.exports = app;

serve.js

const bodyParser = require('body-parser');

const port = 5001;

const app = require('./functions/app.js');

app.use(bodyParser.json());

const message = `app is listening on port ${port}!`;

app.listen(port, () => console.log(message));

Модульное тестирование облегчит вашу жизнь при работе с облачными функциями. Они заставят вас сэкономить время и одновременно сделают вас лучшим программистом.

Примечание: в этом случае вы фактически используете базу данных firestore, поэтому убедитесь, что у вас есть среда разработки. Если вы когда-либо используете эмулятор для firestore, он находится на вашем локальном компьютере, поэтому он не записывает данные в реальную базу данных. Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...