Ошибка типа: logging.log не является функцией JavaScript Google Cloud Fuction - PullRequest
1 голос
/ 03 апреля 2019

Я искал и не могу найти ничего по этому вопросу.

Я развернул несколько функций Google Cloud, написанных на JavaScript, который использует следующую функцию для сообщения об ошибках. Функции работают успешно, но я получаю следующую ошибку:

TypeError: logging.log не является функцией в reportError (/user_code/index.js:158:23)

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

функция reportError:

function reportError(err, context = {}) {

  const logName = 'errors';
  const log = logging.log(logName);

  // https://cloud.google.com/logging/docs/api/ref_v2beta1/rest/v2beta1/MonitoredResource
  const metadata = {
    resource: {
      type: 'cloud_function',
      labels: {function_name: process.env.FUNCTION_NAME},
    },
  };

  // https://cloud.google.com/error-reporting/reference/rest/v1beta1/ErrorEvent
  const errorEvent = {
    message: err.stack,
    serviceContext: {
      service: process.env.FUNCTION_NAME,
      resourceType: 'cloud_function',
    },
    context: context,
  };

  // Write the error log entry
  return new Promise((resolve, reject) => {
    log.write(log.entry(metadata, errorEvent), (error) => {
      if (error) {
       return reject(error);
      }
      return resolve();
    });
  });
}
// [END reporterror]

1 Ответ

1 голос
/ 03 апреля 2019

Как есть, изменив инициализацию переменной 'logging' на, заменив YOUR_PROJECT_ID идентификатором проекта, в котором была создана эта облачная функция:

const logging = new (require('@googlecloud/logging')).Logging({projectId:'YOUR_PROJECT_ID'});

Это должно работать.

Вы можете изменить код несколькими способами, но в зависимости от того, что вы разместили здесь, будет новая версия (просто измените переменную projectId соответственно):

const google_cloud_logging = require('@google-cloud/logging');

function reportError(err, context = {}) {

  const logName = 'errors';

  const projectId = '';

  const logging = new google_cloud_logging.Logging({projectId: projectId});

  const log = logging.log(logName);

  // https://cloud.google.com/logging/docs/api/ref_v2beta1/rest/v2beta1/MonitoredResource
  const metadata = {
    resource: {
      type: 'cloud_function',
      labels: {function_name: process.env.FUNCTION_NAME},
    },
  };

  // https://cloud.google.com/error-reporting/reference/rest/v1beta1/ErrorEvent
  const errorEvent = {
    message: err.stack,
    serviceContext: {
      service: process.env.FUNCTION_NAME,
      resourceType: 'cloud_function',
    },
    context: context,
  };

  // Write the error log entry
  return new Promise((resolve, reject) => {
    log.write(log.entry(metadata, errorEvent), (error) => {
      if (error) {
       return reject(error);
      }
      return resolve();
    });
  });
}
// [END reporterror]

Эти изменения были основаны на следующем примере .

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