Sentry-javascript: [error] ./node_modules/@sentry/node/esm/integrations/console.js Módulo no encontrado: No se puede resolver la 'consola' en - Sentry en Nextjs

Creado en 11 ene. 2020  ·  22Comentarios  ·  Fuente: getsentry/sentry-javascript

Paquete + Versión

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

Descripción

Tengo una aplicación nextjs y seguí este tutorial proporcionado por la comunidad nextjs . El problema es que después de compilar y ejecutar mi aplicación, aparece este error:

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

Reconstruí mi aplicación y eliminé mi bloqueo de hilo y la carpeta de compilación, ¡pero no pasó nada! ¡Aunque tengo el directorio en mis node_modules!

El error es cuando intento importar Sentry de esta manera:

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

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

Needs Triage

Comentario más útil

@ 5tormTrooper No estoy seguro de si esto ayudará, pero olvidé agregar el () a la declaración require:

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

Todos 22 comentarios

Creo que el problema fue la versión de @zeit/next-source-maps que cambié a:
@zeit/next-source-maps": "0.0.4-canary.1 .

Luego limpié node_modules y eliminé yarn.lock y reconstruí! ¡Está trabajando ahora!

@afsanefda Todavía tengo este problema después de limpiar node_modules eliminar yarn.lock y tener @zeit/next-source-maps": "0.0.4-canary.1 como dependencia ... ¿Hizo alguna otra cosa que podría haber solucionado el problema?

Agregar:

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

al next.config.js

¿Alguna solución a esto?

¿Alguna solución a esto?

Definitivamente se debe a la inconsistencia de la versión. por favor verifique las versiones como se describe arriba.

Seguí la sugerencia exactamente y todavía tengo este problema.

@ 5tormTrooper No estoy seguro de si esto ayudará, pero olvidé agregar el () a la declaración require:

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

todavía estoy enfrentando este problema:

@ centinela / nodo ^ 5.11.0

¿Alguien puede ayudar?

@philkeys ya lo intentó. Sin suerte.

Enfrenté el mismo problema después de actualizar Next.js de ' 9.1.6 ' a ' 9.3.5 '. Después de un poco de depuración, pensé que ' @ sentry / node ' de alguna manera terminó en el paquete del cliente. Parece que esta línea dejó de funcionar de repente.

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

¿Reabrimos este tema? Intenté actualizar todos los paquetes y no puedo encontrar la manera de resolverlo.

¿Existe alguna solución para este problema? Parece ser una característica tan genérica que cualquier biblioteca debería admitir desde el primer momento.

Como puede ver, todos los problemas a los que se hace referencia ya se han resuelto de alguna manera cambiando la configuración de desarrollo. No puedo proporcionar ninguna solución específica si no se me presenta un problema concreto y un caso de reproducción.

@kamilogorek gracias por la información. Solo veo una referencia a un problema que parece no estar relacionado. El OP sugirió actualizar @zeit/next-source-maps (que no estamos usando)

Intentaré crear un repositorio de reproducción, aunque tendrás que proporcionar un archivo .env con tokens de centinela tú mismo.

¿alguna solución?

Pude hacer que funcionara replicando de cerca el ejemplo proporcionado . Me encontré con este problema nuevamente al cambiar a SSG ( next export ) Como no necesitamos informes de servidor para SSG, simplemente eliminamos el alias del paquete web (+ todo lo que hace referencia a @sentry/node ) y funcionó de nuevo . Ahora solo usamos @sentry/browser .

Si tienes esta línea:

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

Entonces también necesitas instalar @sentry/browser . El error es un poco engañoso ...

en mi next.config.js, ya estaba haciendo el método fs: "vacío" con también aliasing sentry / node con el navegador cuando! isServer, sin embargo, agregando un console.log allí, puedes ver que tu registro no está impreso en la consola.

buscando en el código fuente de los complementos que tenía (withSourceMaps, withSass, withOptimizedImages) y agregando console.log en cada uno de ellos, me di cuenta de que mi configuración base no se estaba enviando a los complementos externos con este método de encadenamiento (parecen regresar la configuración en sí, pero algo todavía está apagado):

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

por lo que su fs: "vacío" nunca se respeta.

la solución que encontré para esto fue instalar el paquete next-compose-plugins y luego cambiar la exportación a

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

Si tienes esta línea:

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

Entonces también necesitas instalar @sentry/browser . El error es un poco engañoso ...

@vpontis , esto no funcionó para mí. Estoy usando Sentry con Vue.js y he agregado esto a vue.config.js

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

Quiero agregar en caso de que alguien todavía tenga problemas.

Si está utilizando next-source-maps, asegúrese de que el paquete @zeit/next-source-maps esté configurado en 0.0.4-canary.1

Ni siquiera necesito un next.config.js, y no estoy usando sentry con next-source-maps así que no estoy seguro de cuál es la solución para mí.

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

es lo que puse en mi _app.js después de instalar @sentry/node @sentry/browser @sentry/react y sigo recibiendo este error.

Me encontré con esto una vez que comencé a usar @ zeit / next-source-maps ":" ¡0.0.4-canary.1 también!

Para solucionarlo, eliminé el complemento y luego agregué la parte importante del código a la siguiente configuración:

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

No es un problema con centinela, sino con el siguiente complemento de mapa fuente

¿Fue útil esta página
0 / 5 - 0 calificaciones