@sentry/browser
^ 5.11.0@sentry/node
^ 5.11.0node
v12.7.0Eu 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';
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
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')()