Sentry-javascript: [エラー] ./ node_modules/@sentry/node/esm/integrations/console.jsモジュールが見つかりません:「console」を解決できません-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コミュニティが提供するこのチュートリアルに従いました。 問題は、アプリをビルドして実行した後、次のエラーが発生することです。

[ 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これが役立つかどうかは

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これが役立つかどうかは

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

私はまだこの問題に直面しています:

@ sentry / node ^ 5.11.0

誰でも助けることができますか?

@philkeysはすでに

Next.jsを「 9.1.6 」から「 9.3.5 」にアップグレードした後、同じ問題に直面しました。 いくつかのデバッグの後、私は ' @ sentry / node 'がどういうわけかクライアントバンドルになってしまったことに気づきました。 この回線が突然機能しなくなったようです。

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

この問題を再開しますか? すべてのパッケージを更新しようとしましたが、解決方法がわかりません。

この問題の解決策はありますか? これは非常に一般的な機能のようで、どのライブラリもすぐにサポートする必要があります。

お分かりのように、参照されているすべての問題は、devconfigを変更することですでに何らかの形で解決されています。 具体的な問題と再現ケースが提示されない場合、特定の修正を提供することはできません。

情報については@kamilogorekthx 。 関係がないと思われる問題への参照が1つだけ表示されます。 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では、!isServerのときにsentry / nodeをブラウザでエイリアス化してfs: "empty"メソッドを実行していましたが、そこにconsole.logを追加すると、ログがコンソールに出力されないことがわかります。

私が持っていたプラグイン(withSourceMaps、withSass、withOptimizedImages)のソースコードを掘り下げて、それぞれにconsole.logを追加すると、この連鎖方法では基本構成が外部プラグインに送信されていないことに気付きました(設定自体ですが、まだ何かがオフになっています):

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

したがって、あなたのfs:「空」は決して尊重されません。

このために私が見つけた解決策は、next-compose-pluginsパッケージをインストールしてから、エクスポートを次のように変更することでした。

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

この行がある場合:

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

次に、 @sentry/browserもインストールする必要があります。 エラーは少し誤解を招くです...

@vpontis 、これは私にはうまく

  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に入れたものですが、それでもこのエラーが発生します。

@ 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 評価