Я пытаюсь получить список объектов из корзины GCP в мое приложение, развернутое в firebase. Код для него выглядит следующим образом:
apis.js
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucketName = 'gs://cloud-dev-setup';
exports.getBucketData = (req, res) => {
storage.bucket(bucketName).getFiles().then(files => {
[files] = files;
let data = [];
files.forEach(file => {
data.push(file.name);
});
res.send(data);
}).catch( error => {
res.send('catch');
});
}
index.js
const functions = require('firebase-functions');
const express = require('express');
const apis = require('./apis');
const app = express();
app.get('/test', (req, res) => {
res.send("Hello from Firebase!");
});
app.get('/fileList', apis.getBucketData);
exports.app = functions.https.onRequest(app);
firebase.json
{
"hosting": {
"public": "public",
"rewrites": [{
"source": "**",
"function": "app"
}],
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
}
Когда он запускается локально, он получает список объектов и работает как положено.
Но при развертывании на сервере firebase я получаю следующую ошибку:
TypeError: stream.destroy не является функцией
atResultSet (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/paginator/build/src/index.js:245:24)
по запросу (/user_code/node_modules/@google-cloud/storage/build/src/bucket.js:1344:17)
в Util.handleResp (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/build/src/util.js:141:9)
в retryRequest (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/build/src/util.js:422:22)
по адресу onResponse (/user_code/node_modules/@google-cloud/storage/node_modules/retry-request/index.js:200:7)
по адресу /user_code/node_modules/@google-cloud/storage/node_modules/teeny-request/build/src/index.js:222:13
at process._tickDomainCallback (internal / process / next_tick.js: 135: 7)
Выполнение функции заняло 841 мс, завершено со статусом: 'crash'
Ошибка: функция вышла из области действия. Функция не может быть
казнены.
Я ссылаюсь на эту страницу GCP для настройки приложения.