@sentry/browser
^5.11.0@sentry/node
^5.11.0node
v12.7.0Ich 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';
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
Hilfreichster Kommentar
@5tormTrooper Ich bin
const withSourceMaps = require('@zeit/next-source-maps')()