Sentry-javascript: [ erreur ] ./node_modules/@sentry/node/esm/integrations/console.js Module introuvable : impossible de résoudre 'console' dans - Sentry dans Nextjs

Créé le 11 janv. 2020  ·  22Commentaires  ·  Source: getsentry/sentry-javascript

Forfait + Version

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

La description

J'ai une application nextjs et j'ai suivi ce tutoriel fourni par la communauté nextjs . Le problème est qu'après avoir créé et exécuté mon application, cela donne cette erreur :

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

J'ai reconstruit mon application et supprimé mon dossier de verrouillage de fil et de construction, mais rien ne s'est passé ! Bien que j'ai le répertoire dans mon node_modules!

L'erreur est lorsque j'essaie d'importer Sentry comme ceci :

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

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

Needs Triage

Commentaire le plus utile

@ 5tormTrooper Je ne sais pas si cela va aider, mais j'ai oublié d'ajouter le () à l'instruction require :

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

Tous les 22 commentaires

Je pense que le problème était la version de @zeit/next-source-maps que j'ai changée en :
@zeit/next-source-maps": "0.0.4-canary.1 .

Ensuite, j'ai nettoyé node_modules et supprimé yarn.lock et reconstruit ! Il fonctionne maintenant!

@afsanefda J'ai toujours ce problème après avoir nettoyé node_modules supprimer yarn.lock et avoir @zeit/next-source-maps": "0.0.4-canary.1 comme dépendance... Avez-vous fait autre chose qui aurait pu résoudre le problème ?

Ajouter:

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

au next.config.js

Une solution à cela ?

Une solution à cela ?

C'est certainement à cause de l'incohérence de la version. veuillez vérifier les versions comme décrit ci-dessus.

J'ai suivi exactement la suggestion et j'ai toujours ce problème.

@ 5tormTrooper Je ne sais pas si cela va aider, mais j'ai oublié d'ajouter le () à l'instruction require :

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

je suis toujours confronté à ce problème :

@sentinelle/nœud^5.11.0

N'importe qui peut aider ?

@philkeys a déjà essayé. Pas de chance.

J'ai rencontré le même problème après la mise à niveau de Next.js de " 9.1.6 " à " 9.3.5 ". Après quelques débogages, j'ai pensé que ' @sentry/node ' se retrouvait en quelque sorte dans le bundle client. Il semble que cette ligne a cessé de fonctionner tout d'un coup.

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

Et pouvons-nous rouvrir ce problème ? J'ai essayé de mettre à jour tous les packages et je ne sais pas comment le résoudre.

Existe-t-il une solution à ce problème ? Cela semble être une fonctionnalité tellement générique que toute bibliothèque devrait prendre en charge immédiatement.

Comme vous pouvez le constater, tous les problèmes référencés ont déjà été résolus d'une manière ou d'une autre en modifiant la configuration de développement. Je ne suis pas en mesure de fournir une solution spécifique si je ne suis pas confronté à un problème concret et à un cas de reproduction.

@kamilogorek merci pour l'info. Je ne vois qu'une seule référence à un problème qui semble sans rapport. L'OP a suggéré de mettre @zeit/next-source-maps jour

Je vais essayer de créer un dépôt de reproduction, bien que vous deviez fournir vous-même un fichier .env avec des jetons de sentinelle.

Toute solution?

J'ai pu le faire fonctionner en reproduisant fidèlement l'exemple fourni . J'ai à nouveau rencontré ce problème lors du passage à SSG ( next export ) Étant donné que nous n'avons pas besoin de rapports de serveur pour SSG, nous avons simplement supprimé l'alias webpack (+ tout ce qui fait référence à @sentry/node ) et cela a fonctionné à nouveau . Maintenant, nous n'utilisons que @sentry/browser .

Si vous avez cette ligne :

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

Ensuite, vous devez également installer @sentry/browser . L'erreur est un peu trompeuse...

dans mon next.config.js, je faisais déjà la méthode fs: "empty" avec également un alias sentry/node avec le navigateur lorsque !isServer y ajoutait cependant un console.log pour que vous puissiez voir que votre journal n'est pas imprimé sur la console.

en fouillant dans le code source des plugins que j'avais (withSourceMaps, withSass, withOptimizedImages) et en ajoutant console.log dans chacun d'eux, j'ai réalisé que ma configuration de base n'était pas envoyée aux plugins externes avec cette méthode de chaînage (ils semblent revenir la configuration elle-même mais quelque chose ne va toujours pas):

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

donc votre fs: "vide" n'est jamais respecté.

la solution que j'ai trouvée pour cela était d'installer le package next-compose-plugins puis de modifier l'exportation en

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

Si vous avez cette ligne :

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

Ensuite, vous devez également installer @sentry/browser . L'erreur est un peu trompeuse...

@vpontis , cela n'a pas fonctionné pour moi. J'utilise Sentry avec Vue.js et j'ai ajouté ceci à vue.config.js

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

Je veux ajouter au cas où quelqu'un aurait encore des problèmes.

Si vous utilisez next-source-maps, assurez-vous que le package @zeit/next-source-maps est défini sur 0.0.4-canary.1

Je n'ai même pas besoin d'un next.config.js, et je n'utilise pas sentinelle avec next-source-maps donc je ne sais pas quelle est la solution pour moi.

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

est ce que j'ai mis dans mon _app.js après avoir installé @sentry/node @sentry/browser @sentry/react et j'obtiens toujours cette erreur.

J'ai rencontré cela une fois que j'ai commencé à utiliser @zeit/next-source-maps": "0.0.4-canary.1 également !

Pour y remédier, j'ai supprimé le plugin, puis ajouté la partie importante du code à la config suivante :

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

Ce n'est pas un problème avec sentinelle, mais avec le prochain plugin de carte source

Cette page vous a été utile?
0 / 5 - 0 notes