Sentry-javascript: [错误] ./node_modules/@sentry/node/esm/integrations/console.js 找不到模块:无法解析“控制台” - Nextjs 中的 Sentry

创建于 2020-01-11  ·  22评论  ·  资料来源: getsentry/sentry-javascript

套餐+版本

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

描述

我有一个 nextjs 应用程序,我遵循了nextjs community提供的教程。 问题是在构建并运行我的应用程序后出现此错误:

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

我重建了我的应用程序并删除了我的纱线锁和构建文件夹,但什么也没发生! 虽然我的 node_modules 中有目录!

错误是当我尝试像这样导入 Sentry 时:

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

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

Needs Triage

最有用的评论

@5tormTrooper不确定这是否有帮助,但我忘了将 () 添加到 require 语句中:

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

所有22条评论

我认为问题在于我更改为的@zeit/next-source-maps版本:
@zeit/next-source-maps": "0.0.4-canary.1

然后我清理了node_modules并删除了yarn.lock并重建! 它现在正在工作!

@afsanefda在清理node_modules删除yarn.lock并将@zeit/next-source-maps": "0.0.4-canary.1作为依赖项后,我仍然有这个问题......你有没有做任何其他可以解决这个问题的事情?

添加:

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

next.config.js

有什么解决办法吗?

有什么解决办法吗?

这肯定是因为版本不一致。 请检查上述版本。

完全按照建议进行操作,但我仍然遇到此问题。

@5tormTrooper不确定这是否有帮助,但我忘了将 () 添加到 require 语句中:

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

我仍然面临这个问题:

@哨兵/节点^5.11.0

任何人都可以帮忙吗?

@philkeys已经尝试过了。 没运气。

将 Next.js 从“ 9.1.6 ”升级到“ 9.3.5 ”后,我遇到了同样的问题。 经过一些调试后,我发现“ @sentry/node ”以某种方式最终出现在客户端包中。 这条线似乎突然停止工作了。

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

我们重新打开这个问题? 我尝试更新所有软件包,但不知道如何解决。

这个问题有什么解决方案吗? 它似乎是一个通用特性,任何库都应该支持开箱即用。

如您所知,所有引用的问题都已通过更改开发配置以某种方式解决。 如果我没有遇到具体的问题和重现案例,我将无法提供任何具体的修复。

@kamilogorek thx 的信息。 我只看到一个似乎不相关的问题的参考。 OP 建议更新@zeit/next-source-maps (我们没有使用)

我将尝试创建一个复制存储库,但您必须自己提供带有哨兵令牌的.env文件。

任何解决方案?

我能够通过密切复制所提供的示例来使其工作。 我在切换到 SSG ( next export ) 时再次遇到这个问题,因为我们不需要 SSG 的服务器报告,我们简单地删除了 webpack 别名(+ 引用@sentry/node ),它再次工作. 现在我们只使用@sentry/browser

如果你有这条线:

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

然后你还需要安装@sentry/browser 。 这个错误有点误导......

在我的 next.config.js 中,我已经在做 fs: "empty" 方法,当 !isServer 时,还使用浏览器别名哨兵/节点,但是在那里添加了一个 console.log,你可以看到你的日志没有打印在控制台上。

挖掘我拥有的插件的源代码(withSourceMaps、withSass、withOptimizedImages)并在每个插件中添加 console.log,我意识到我的基本配置没有通过这种链接方法发送到外部插件(它们似乎返回配置本身,但有些东西仍然关闭):

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

所以你的 fs: "empty" 永远不会得到尊重。

我为此找到的解决方案是安装 next-compose-plugins 包,然后将导出更改为

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

如果你有这条线:

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

然后你还需要安装@sentry/browser 。 这个错误有点误导......

@vpontis ,这对我不起作用。 我在 Vue.js 中使用 Sentry 并将其添加到 vue.config.js

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

我想补充以防有人仍然遇到问题。

如果您使用 next-source-maps,请确保将@zeit/next-source-maps包设置为0.0.4-canary.1

我什至不需要 next.config.js,而且我没有将哨兵与next-source-maps所以我不确定解决方案对我来说是什么。

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

是我在安装@sentry/node @sentry/browser @sentry/react后放入_app.js @sentry/node @sentry/browser @sentry/react ,但仍然出现此错误。

一旦我开始使用 @zeit/next-source-maps": "0.0.4-canary.1,我就遇到了这个问题!

为了修复它,我删除了插件,然后将代码的重要部分添加到下一个配置中:

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

这不是哨兵的问题,而是下一个源地图插件

此页面是否有帮助?
0 / 5 - 0 等级