Google Storage не является ошибкой конструктора - PullRequest
0 голосов
/ 06 сентября 2018

Я создаю приложение, и моя цель заключается в том, чтобы каждый раз, когда кто-то загружал изображение в хранилище Firebase, облачная функция изменяла его размер.

...
import * as Storage from '@google-cloud/storage'
const gcs = new Storage()
...

exports.resizeImage = functions.storage.object().onFinalize( async object => {
   const bucket = gcs.bucket(object.bucket);
   const filePath = object.name;
   const fileName = filePath.split('/').pop();
   const bucketDir = dirname(filePath);
....

И когда я пытался развернуть эту функцию, я получаю эту ошибку:

Error: Error occurred while parsing your function triggers.

TypeError: Storage is not a constructor

Я пытался использовать "new Storage ()" или просто "Storage", и ничего не работает.

Я новичок здесь, так что если я что-то забыл, чтобы вы отладили это, просто дайте мне знать.

Спасибо!


Google-облако / хранилище: 2.0.0

Узел js: v8.11.4

1 Ответ

0 голосов
/ 06 сентября 2018

Документация API для облачного хранилища предполагает, что вы должны использовать require для загрузки модуля:

const Storage = require('@google-cloud/storage');

Это применимо к версиям Cloud Storage до версии 2.x.

В 2.x произошло критическое изменение API. Вам нужно сделать это сейчас:

const { Storage } = require('@google-cloud/storage');

Если вы хотите привязки TypeScript, рассмотрите возможность использования облачного хранилища через Firebase Admin SDK. Admin SDK просто оборачивает модуль Cloud Storage , а также экспортирует привязки типов, чтобы сопровождать его. Это просто в использовании:

import * as admin from 'firebase-admin'
admin.initializeApp()
admin.storage().bucket(...)

admin.storage() дает вам ссылку на объект Storage, с которым вы пытаетесь работать.

...