создание ошибки Google Bucket Bucks выдает - PullRequest
0 голосов
/ 25 февраля 2020

Моя дилемма не пытается создать облако Google Bucket, я могу сделать это так:

const { Storage } = require('@google-cloud/storage');
const storage = new Storage({projectId: 'my-project', keyFilename: "key.json" });
async function createBucket() {
   await storage.createBucket('my-bucket');
};
createBucket().catch(console.error);

Это работает нормально, но я не собираюсь вызывать свою функцию для создания ведро. Вот моя функция в файле cloudStorage. js для создания корзины:

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

 const storage = new Storage({ projectId: 'my-project', keyFilename: "key.json" });
 module.exports = {
  createGoogleBucket: async ({ bucketName }) => {
      await storage.createBucket(bucketName);
  },
};

Когда я вызываю это так:

  const  cloudStorage  = require('../src/cloudStorage');
  await cloudStorage.createGoogleBucket('my-bucket');

Я получаю следующую ошибку:

   UnhandledPromiseRejectionWarning: TypeError: callback is not a function
  at C:\code\BigQueryDemo\node_modules\@google-cloud\storage\build\src\storage.js:312:17

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

Спасибо

1 Ответ

2 голосов
/ 25 февраля 2020

Вы получаете это несколько вводящее в заблуждение сообщение об ошибке, поскольку облачная библиотека Google считает, что вы пытаетесь передать обратный вызов вместо имени корзины. Это происходит потому, что в этом коде:

  createGoogleBucket: async ({ bucketName }) => {
      await storage.createBucket(bucketName);
  },

({ bucketName }) является деструктурирующим присваиванием - он пытается присвоить локальную переменную bucketName путем доступа к bucketName свойство любого первого аргумента, который передается функции. В этом случае вы передаете строковый литерал - а строковые литералы не имеют свойства bucketName. Следовательно, вы фактически передаете undefined на storage.createBucket(). Чтобы исправить, просто удалите скобки, чтобы не пытаться разрушить строку:

  createGoogleBucket: async (bucketName) => {
      await storage.createBucket(bucketName);
  },
...