Sentry-javascript: [ error ] ./node_modules/@sentry/node/esm/integrations/console.js Modul nicht gefunden: 'Konsole' in - Sentry in Nextjs kann nicht aufgelöst werden

Erstellt am 11. Jan. 2020  ·  22Kommentare  ·  Quelle: getsentry/sentry-javascript

Paket + Version

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

Beschreibung

Ich habe eine nextjs-Anwendung und bin diesem von der nextjs-Community bereitgestellten Tutorial

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

Ich habe meine App neu erstellt und meine Garnsperre und meinen Build-Ordner entfernt, aber nichts ist passiert! Obwohl ich das Verzeichnis in meinen node_modules habe!

Der Fehler tritt auf, wenn ich versuche, Sentry wie folgt zu importieren:

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

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

Needs Triage

Hilfreichster Kommentar

@5tormTrooper Ich bin

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

Alle 22 Kommentare

Ich denke, das Problem war die Version von @zeit/next-source-maps die ich geändert habe:
@zeit/next-source-maps": "0.0.4-canary.1 .

Dann habe ich node_modules gereinigt und yarn.lock und neu aufgebaut! Es funktioniert jetzt!

@afsanefda Ich habe dieses Problem immer noch, nachdem node_modules yarn.lock und @zeit/next-source-maps": "0.0.4-canary.1 als Abhängigkeit entfernt wurde ... Haben Sie etwas anderes getan, das das Problem hätte beheben können?

Hinzufügen:

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

zum next.config.js

Irgendeine Lösung dafür?

Irgendeine Lösung dafür?

Es liegt definitiv an der Inkonsistenz der Version. Bitte prüfen Sie die Versionen wie oben beschrieben.

Habe den Vorschlag genau befolgt und ich habe immer noch dieses Problem.

@5tormTrooper Ich bin

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

ich stehe immer noch vor diesem Problem:

@sentry/node^5.11.0

Kann jemand helfen?

@philkeys hat das schon versucht. Kein Glück.

Ich hatte das gleiche Problem, nachdem ich Next.js von ' 9.1.6 ' auf ' 9.3.5 ' aktualisiert hatte . Nach einigem Debuggen stellte ich fest, dass ' @sentry/node ' irgendwie im Client-Bundle gelandet ist. Es scheint, dass diese Linie plötzlich nicht mehr funktioniert.

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

Und öffnen wir dieses Thema wieder? Ich habe versucht, alle Pakete zu aktualisieren und kann nicht herausfinden, wie ich das Problem beheben kann.

Gibt es eine Lösung für dieses Problem? Es scheint eine so allgemeine Funktion zu sein, die jede Bibliothek sofort unterstützen sollte.

Wie Sie sehen können, wurden alle referenzierten Probleme bereits durch Ändern der dev config behoben. Ich kann keine spezifische Lösung anbieten, wenn mir kein konkretes Problem und kein Reprofall vorliegt.

@kamilogorek thx für die Info. Ich sehe nur einen Hinweis auf ein Problem, das anscheinend nichts miteinander zu tun hat. Das OP schlug vor, @zeit/next-source-maps aktualisieren (was wir nicht verwenden)

Ich werde versuchen, ein Reproduktions-Repository zu erstellen, obwohl Sie selbst eine .env Datei mit Sentry-Token bereitstellen müssen.

irgendeine Lösungsmöglichkeit?

Ich konnte es zum Laufen bringen, indem ich das bereitgestellte Beispiel genau nachahmte. Ich lief wieder in dieses Thema , wenn auf SSG (Schale next export ) Da wir für SSG nicht Server-Berichte müssen wir einfach die webpack alias entfernt (+ alles Referenzierung @sentry/node ) und es funktionierte wieder . Jetzt verwenden wir nur noch @sentry/browser .

Wenn Sie diese Zeile haben:

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

Dann müssen Sie auch @sentry/browser installieren. Der Fehler ist etwas irreführend...

in meiner next.config.js habe ich bereits die fs: "leere" Methode mit auch dem Aliasing von Sentry/Node mit dem Browser gemacht, wenn !isServer jedoch eine console.log hinzugefügt hat, damit Sie sehen können, dass Ihr Protokoll nicht auf der Konsole gedruckt wird.

Als ich den Quellcode der Plugins durchforstete, die ich hatte (withSourceMaps, withSass, withOptimizedImages) und in jedem von ihnen console.log hinzufügte, stellte ich fest, dass meine Basiskonfiguration mit dieser Verkettungsmethode nicht an die äußeren Plugins gesendet wurde (sie scheinen zurückzugeben) die config selbst aber irgendwas ist noch aus):

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

also dein fs: "leer" wird nie respektiert.

Die Lösung, die ich dafür gefunden habe, bestand darin, das Paket next-compose-plugins zu installieren und dann den Export in zu ändern

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

Wenn Sie diese Zeile haben:

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

Dann müssen Sie auch @sentry/browser installieren. Der Fehler ist etwas irreführend...

@vpontis , das hat bei mir nicht funktioniert. Ich verwende Sentry mit Vue.js und habe dies zu vue.config.js hinzugefügt

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

Ich möchte hinzufügen, falls noch jemand Probleme hat.

Wenn Sie Next-Source-Maps verwenden, stellen Sie sicher, dass das Paket @zeit/next-source-maps auf 0.0.4-canary.1

Ich brauche nicht einmal eine next.config.js und verwende keine Wache mit next-source-maps daher bin ich mir nicht sicher, was die Lösung für mich ist.

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

ist das, was ich in mein _app.js nachdem ich @sentry/node @sentry/browser @sentry/react installiert habe und ich immer noch diese Fehlermeldung bekomme.

Ich bin darauf gestoßen, als ich anfing, @zeit/next-source-maps zu verwenden: "0.0.4-canary.1 auch!

Um es zu beheben, habe ich das Plugin entfernt und dann den wichtigen Teil des Codes zur nächsten Konfiguration hinzugefügt:

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
            }
          }
        }
      }

Mit Sentry ist das kein Problem, aber mit dem nächsten Source-Map-Plugin

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen