Sentry-javascript: [erro] ./node_modules/@sentry/node/esm/integrations/console.js Módulo não encontrado: Não é possível resolver 'console' em - Sentinela em Nextjs

Criado em 11 jan. 2020  ·  22Comentários  ·  Fonte: getsentry/sentry-javascript

Pacote + Versão

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

Descrição

Eu tenho um aplicativo nextjs e segui este tutorial fornecido pela comunidade nextjs . O problema é que depois de compilar e executar meu aplicativo, ocorre este erro:

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

Eu reconstruí meu aplicativo e removi meu bloqueio de fios e pasta de construção, mas nada aconteceu! Embora eu tenha o diretório em meu node_modules!

O erro é quando estou tentando importar o Sentry assim:

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

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

Needs Triage

Comentários muito úteis

@ 5tormTrooper Não tenho certeza se isso vai ajudar, mas esqueci de adicionar o () à instrução require:

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

Todos 22 comentários

Acho que o problema era a versão de @zeit/next-source-maps que mudei para:
@zeit/next-source-maps": "0.0.4-canary.1 .

Então eu limpei node_modules e removi yarn.lock e reconstruí! Está funcionando agora!

@afsanefda Ainda tenho esse problema depois de limpar node_modules remover yarn.lock e ter @zeit/next-source-maps": "0.0.4-canary.1 como dependência ... Você fez alguma outra coisa que poderia ter corrigido o problema?

Adicionar:

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

para o next.config.js

Alguma solução para isso?

Alguma solução para isso?

É definitivamente por causa da inconsistência da versão. verifique as versões conforme descrito acima.

Segui exatamente a sugestão e ainda estou tendo esse problema.

@ 5tormTrooper Não tenho certeza se isso vai ajudar, mas esqueci de adicionar o () à instrução require:

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

ainda estou enfrentando este problema:

@ sentry / node ^ 5.11.0

Alguém pode ajudar?

@philkeys já tentou isso. Sem sorte.

Eu enfrentei o mesmo problema depois de atualizar Next.js de ' 9.1.6 ' para ' 9.3.5 '. Depois de alguma depuração, percebi que ' @ sentry / node ' de alguma forma acabou no pacote do cliente. Parece que essa linha parou de funcionar de repente.

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

Podemos reabrir este problema? Tentei atualizar todos os pacotes e não consigo descobrir como resolver isso.

Existe alguma solução para este problema? Parece ser um recurso tão genérico que qualquer biblioteca deve oferecer suporte pronto para uso.

Como você pode ver, todos os problemas referenciados já foram resolvidos de alguma forma alterando a configuração do dev. Não posso fornecer nenhuma correção específica se não for apresentado um problema concreto e um caso de reprodução.

@kamilogorek thx pela informação. Vejo apenas uma referência a um problema que parece não ter relação. O OP sugeriu atualizar @zeit/next-source-maps (que não estamos usando)

Tentarei criar um repositório de reprodução, embora você mesmo tenha que fornecer um arquivo .env com tokens de sentinela.

qualquer solução?

Consegui fazê-lo funcionar replicando de perto o exemplo fornecido . Eu tive esse problema novamente ao mudar para SSG ( next export ) Como não precisamos de relatórios de servidor para SSG, simplesmente removemos o alias do webpack (+ tudo referenciando @sentry/node ) e funcionou novamente . Agora usamos apenas @sentry/browser .

Se você tem esta linha:

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

Então você também precisa instalar @sentry/browser . O erro é um pouco enganador ...

em meu next.config.js, eu já estava fazendo o método fs: "empty" com também aliasing sentry / node com navegador quando! isServer, entretanto, adicionando um console.log lá que você pode ver que seu log não está impresso no console.

vasculhando o código-fonte dos plug-ins que eu tinha (withSourceMaps, withSass, withOptimizedImages) e adicionando console.log em cada um deles, percebi que minha configuração de base não estava sendo enviada para os plug-ins externos com este método de encadeamento (eles parecem retornar a configuração propriamente dita, mas algo ainda está desativado):

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

para que seu fs: "vazio" nunca seja respeitado.

a solução que encontrei para isso foi instalar o pacote next-compose-plugins e, em seguida, alterar a exportação para

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

Se você tem esta linha:

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

Então você também precisa instalar @sentry/browser . O erro é um pouco enganador ...

@vpontis , isso não funcionou para mim. Estou usando o Sentry com Vue.js e adicionei isso ao vue.config.js

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

Quero adicionar, caso alguém ainda esteja tendo problemas.

Se você estiver usando next-source-maps, certifique-se de que o pacote @zeit/next-source-maps esteja definido como 0.0.4-canary.1

Eu nem preciso de um next.config.js e não estou usando o sentinela com next-source-maps então não tenho certeza de qual é a solução para mim.

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

é o que coloquei no meu _app.js depois de instalar @sentry/node @sentry/browser @sentry/react e ainda recebo este erro.

Eu encontrei isso quando comecei a usar @ zeit / next-source-maps ":" 0.0.4-canary.1 também!

Para corrigir isso, removi o plug-in e adicionei a parte importante do código à próxima configuração:

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

Não é um problema com sentinela, mas com o próximo plugin de mapa de origem

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

grigored picture grigored  ·  3Comentários

THPubs picture THPubs  ·  3Comentários

dimmduh picture dimmduh  ·  3Comentários

kamilogorek picture kamilogorek  ·  3Comentários

simllll picture simllll  ·  3Comentários