"ReferenceError: StackTrace не определено" в приложении Vue с "stackdriver-errors-js"

Я пытаюсь интегрировать библиотеку stackdriver-error-js в мой проект Vue как модуль.

Код и настройка:

в package.json

    "stackdriver-errors-js": "^0.2.0"

в bootstrap.js

   import errorHandler from './error/error-reporting';

в error-reports.js

import { StackdriverErrorReporter } from 'stackdriver-errors-js';   

let errorHandler;

errorHandler = new StackdriverErrorReporter();   
errorHandler.start({
    key: "{{.Config.StackDriverApiKey}}",
    projectId: "{{.Config.StackDriverProject}}",
    service: "{{.Config.GoogleCloudProjectID}}",
    version: "{{.Copacknfig.GaeEnv}}",
    disabled: false
});

export default errorHandler;

Фактическая ошибка

Ошибка, которую я получил сейчас (вывод на консоль и проверка)

[vue-devtools] Ready. Detected Vue v2.4.2
(function testErrorReporting() {window.onerror(null, null, null, null, new Error('Test: Something broke!'));})();

stackdriver-errors.js:109 Uncaught ReferenceError: StackTrace is not defined
    at StackdriverErrorReporter.webpackJsonp.556.StackdriverErrorReporter.report (stackdriver-errors.js:109)
    at window.onerror (stackdriver-errors.js:67)
    at testErrorReporting (<anonymous>:1:40)
    at <anonymous>:1:111

и строка (stackdriver-errors.js:109)

...    
StackTrace.fromError(err).then(function(stack){
...

2 ответа

Если вы не загружаете stackdriver-errors-concat.min.js файл, вам также необходимо вручную также stacktrace-js модуль.

stackdriver-errors ожидает наличия объекта StackTrace.

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

Вместо этого я предлагаю использовать эту другую библиотеку, которая включает в себя функции, связанные с отчетами об ошибках Stackdriver для Node.js и JavaScript.

Прежде всего, установите зависимость, выполнив эту команду:

  npm install --save @google-cloud/error-reporting

Это автоматически добавит зависимость в package.json.

В error-reports.js вы можете добавить зависимость, добавив это в свой код (все параметры являются необязательными):

var errors = require('@google-cloud/error-reporting')({
  projectId: 'my-project-id',
  keyFilename: '/path/to/keyfile.json',
  credentials: require('./path/to/keyfile.json'),
  // if true library will attempt to report errors to the service regardless
  // of the value of NODE_ENV
  // defaults to false
  ignoreEnvironmentCheck: false,
  // determines the logging level internal to the library; levels range 0-5
  // where 0 indicates no logs should be reported and 5 indicates all logs
  // should be reported
  // defaults to 2 (warnings)
  logLevel: 2,
  // determines whether or not unhandled rejections are reported to the
  // error-reporting console
  reportUnhandledRejections: true,
      serviceContext: {
      service: 'my-service',
      version: 'my-service-version'
  }
});

После этого используйте этот код, чтобы проверить, правильно ли Stackdriver сообщает об ошибке:

errors.report(new Error('Something broke!'));

Обратите внимание, что эта библиотека в настоящее время находится на стадии бета-тестирования, поэтому в будущем в нее могут быть внесены некоторые изменения.

Другие вопросы по тегам