Sentry-javascript: [خطأ] ./node_modules/@sentry/node/esm/integrations/console.js الوحدة النمطية غير موجودة: لا يمكن حل "وحدة التحكم" في - Sentry في Nextjs

تم إنشاؤها على ١١ يناير ٢٠٢٠  ·  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 remove 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')()

ما زلت أواجه هذه المشكلة:

@ الحارس / العقدة ^ 5.11.0

يمكن لأي شخص أن يساعد؟

philkeys حاول ذلك بالفعل. لا حظ.

لقد واجهت نفس المشكلة بعد ترقية Next.js من ' 9.1.6 ' إلى ' 9.3.5 '. بعد بعض التصحيح ، اكتشفت أن " @ sentry / node " انتهى بطريقة ما في حزمة العميل. يبدو أن هذا الخط توقف عن العمل فجأة.

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

ونحن نعيد فتح هذه القضية؟ حاولت تحديث جميع الحزم ولا يمكنني معرفة كيفية حلها.

هل يوجد حل لهذه المشكلة؟ يبدو أنها ميزة عامة يجب أن تدعمها أي مكتبة خارج الصندوق.

كما يمكنك أن تقول ، تم بالفعل حل جميع المشكلات المشار إليها بطريقة ما عن طريق تغيير تهيئة dev. لا يمكنني تقديم أي إصلاح محدد إذا لم أواجه مشكلة ملموسة وحالة إعادة بروز.

kamilogorek تشك للحصول على المعلومات. لا أرى سوى إشارة واحدة إلى قضية تبدو غير ذات صلة. اقترح OP تحديث @zeit/next-source-maps (وهو ما لا نستخدمه)

سأحاول إنشاء مستودع نسخ ، على الرغم من أنه سيتعين عليك تقديم ملف .env مع الرموز المميزة بنفسك.

اي حل؟

تمكنت من جعله يعمل من خلال تكرار المثال المقدم عن كثب. واجهت هذه المشكلة مرة أخرى عند التبديل إلى SSG ( next export ) نظرًا لأننا لسنا بحاجة إلى تقارير الخادم لـ SSG ، فقد أزلنا ببساطة الاسم المستعار لحزمة الويب (+ كل شيء يشير إلى @sentry/node ) وعمل مرة أخرى . الآن نحن نستخدم فقط @sentry/browser .

إذا كان لديك هذا الخط:

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

ثم تحتاج أيضًا إلى تثبيت @sentry/browser . الخطأ مضلل بعض الشيء ...

في next.config.js الخاص بي ، كنت أقوم بالفعل باستخدام طريقة fs: "فارغة" مع تسمية الحارس / العقدة المستعارة أيضًا مع المستعرض عندما! isServer مع إضافة console.log هناك بحيث يمكنك رؤية السجل الخاص بك غير مطبوع على وحدة التحكم.

من خلال البحث في الكود المصدري للمكونات الإضافية (withSourceMaps ، withSass ، withOptimizedImages) وإضافة console.log في كل منها ، أدركت أن التكوين الأساسي الخاص بي لم يتم إرساله إلى المكونات الإضافية الخارجية باستخدام طريقة التسلسل هذه (يبدو أنها تعود التكوين بأنفسهم ولكن هناك شيء ما لا يزال معطلاً):

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

لذلك لا يتم احترام fs الخاص بك: "فارغ" أبدًا.

كان الحل الذي وجدته لهذا هو تثبيت حزمة المكونات الإضافية التالية ثم تغيير التصدير إلى

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

إذا كان لديك هذا الخط:

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

ثم تحتاج أيضًا إلى تثبيت @sentry/browser . الخطأ مضلل بعض الشيء ...

vpontis ، هذا لم ينجح بالنسبة لي. أنا أستخدم تطبيق Sentry مع Vue.js وأضفته إلى vue.config.js

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

أريد أن أضيف في حالة استمرار وجود مشكلات لدى شخص ما.

إذا كنت تستخدم خرائط المصدر التالي ، فتأكد من تعيين الحزمة @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, }); }

هو ما أضعه في _app.js بعد أن قمت بتثبيت @sentry/node @sentry/browser @sentry/react وما زلت أتلقى هذا الخطأ.

واجهت هذا بمجرد أن بدأت باستخدام خرائط @ zeit / next-source ":" 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 التقييمات