Sentry-javascript: [ошибка] ./node_modules/@sentry/node/esm/integrations/console.js Модуль не найден: не удается разрешить «консоль» в - Sentry в Nextjs

Созданный на 11 янв. 2020  ·  22Комментарии  ·  Источник: getsentry/sentry-javascript

Пакет + Версия

  • @sentry/browser ^ 5.11.0
  • @sentry/node ^ 5.11.0
  • node v12.7.0

Описание

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

[ error ] ./node_modules/@sentry/node/esm/integrations/console.js
Module not found: Can't resolve 'console' in '/.../node_modules/@sentry/node/esm/integrations'

Я перестроил свое приложение и удалил блокировку пряжи и папку сборки, но ничего не произошло! Хотя у меня есть каталог в моих node_modules!

Ошибка возникает, когда я пытаюсь импортировать Sentry следующим образом:

import * as Sentry from '@sentry/node';

Screenshot from 2020-01-11 12-56-20

Needs Triage

Самый полезный комментарий

@ 5tormTrooper Не уверен, что это поможет, но я забыл добавить () в оператор require:

const withSourceMaps = require('@zeit/next-source-maps')()

Все 22 Комментарий

Я думаю, проблема была в версии @zeit/next-source-maps которую я изменил на:
@zeit/next-source-maps": "0.0.4-canary.1 .

Затем я очистил node_modules удалил yarn.lock и перестроил! Теперь он работает!

@afsanefda У меня все еще есть эта проблема после очистки node_modules remove yarn.lock и наличия зависимости @zeit/next-source-maps": "0.0.4-canary.1 ... Вы сделали что-нибудь еще, что могло бы решить проблему?

Добавлять:

if (!options.isServer) {
  config.resolve.alias['@sentry/node'] = '@sentry/browser'
}

в next.config.js

Любое решение для этого?

Любое решение для этого?

Это однозначно из-за несогласованности версий. пожалуйста, проверьте версии, как описано выше.

Точно выполнила предложение, и у меня все еще есть эта проблема.

@ 5tormTrooper Не уверен, что это поможет, но я забыл добавить () в оператор require:

const withSourceMaps = require('@zeit/next-source-maps')()

я все еще сталкиваюсь с этой проблемой:

@ часовой / узел ^ 5.11.0

Кто-нибудь может помочь?

@philkeys уже пробовали это. Не повезло.

Я столкнулся с такой же проблемой после обновления Next.js с « 9.1.6 » до « 9.3.5 ». После некоторой отладки я решил, что « @ sentry / node » каким-то образом оказался в клиентском пакете. Кажется, что эта линия вдруг перестала работать.

if (!isServer) { config.resolve.alias['@sentry/node'] = '@sentry/browser'; }

Мы снова откроем эту проблему? Я попытался обновить все пакеты и не могу понять, как это решить.

Есть ли решение этой проблемы? Кажется, это такая общая функция, которую должна поддерживать любая библиотека из коробки.

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

@kamilogorek спасибо за информацию. Я вижу только одну ссылку на проблему, которая, кажется, не имеет отношения. OP предложил обновить @zeit/next-source-maps (который мы не используем)

Я попытаюсь создать репозиторий воспроизведения, хотя вам придется предоставить файл .env с токенами часового самостоятельно.

любое решение?

Мне удалось заставить его работать, точно воспроизведя приведенный пример . Я снова столкнулся с этой проблемой при переключении на SSG ( next export ) Поскольку нам не нужны серверные отчеты для SSG, мы просто удалили псевдоним webpack (+ все, что ссылается на @sentry/node ), и он снова @sentry/browser .

Если у вас есть эта строка:

if (!isServer) { config.resolve.alias['@sentry/node'] = '@sentry/browser'; }

Затем вам также необходимо установить @sentry/browser . Ошибка немного вводит в заблуждение ...

в моем next.config.js я уже выполнял метод fs: "empty" с псевдонимом sentry / node с браузером, когда! isServer, однако добавляя туда console.log, чтобы вы могли видеть, что ваш журнал не печатается на консоли.

копаясь в исходном коде плагинов, которые у меня были (withSourceMaps, withSass, withOptimizedImages) и добавляя console.log в каждый из них, я понял, что моя базовая конфигурация не отправляется во внешние плагины с этим методом цепочки (кажется, они возвращают сами конфиг, но что-то еще не работает):

module.exports = withBundleAnalyzer(
    withSourceMaps(
        withSass(
            withOptimizedImages(baseConfig)
        )
    )

так что ваш fs: "empty" никогда не будет уважаться.

решение, которое я нашел для этого, состояло в том, чтобы установить пакет next-compose-plugins, а затем изменить экспорт на

module.exports = withPlugins(
  [
    [withOptimizedImages],
    [withSass],
    [withSourceMaps],
    [withBundleAnalyzer],
  ],
  baseConfig
);

Если у вас есть эта строка:

if (!isServer) { config.resolve.alias['@sentry/node'] = '@sentry/browser'; }

Затем вам также необходимо установить @sentry/browser . Ошибка немного вводит в заблуждение ...

@vpontis , у меня это не сработало. Я использую Sentry с Vue.js и добавил это в vue.config.js

  chainWebpack: (config) => {
    config.resolve.alias['@sentry/node'] = '@sentry/browser'
  }

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

Если вы используете next-source-maps, убедитесь, что для пакета @zeit/next-source-maps установлено значение 0.0.4-canary.1

Мне даже не нужен next.config.js, и я не использую часовую с next-source-maps поэтому я не уверен, какое решение для меня.

if (process.env.NEXT_PUBLIC_SENTRY_DSN) { Sentry.init({ enabled: true, dsn: process.env.NEXT_PUBLIC_SENTRY_DSN, }); }

это то, что я вставил в свой _app.js после того, как установил @sentry/node @sentry/browser @sentry/react но все равно получаю эту ошибку.

Я столкнулся с этим, когда начал использовать @ zeit / next-source-maps ":" и 0.0.4-canary.1!

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

const { dev } = options

      if (!dev) {
        config.devtool = options.devtool || 'source-map'

        for (const plugin of config.plugins) {
          if (plugin.constructor.name === 'UglifyJsPlugin') {
            plugin.options.sourceMap = true
            break
          }
        }

        if (config.optimization && config.optimization.minimizer) {
          for (const plugin of config.optimization.minimizer) {
            if (plugin.constructor.name === 'TerserPlugin') {
              plugin.options.sourceMap = true
              break
            }
          }
        }
      }

Это не проблема с часовым, а со следующим плагином карты источников.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги