Sentry-javascript: Modul 'ngRaven' tidak tersedia! Anda salah mengeja nama modul atau lupa memuatnya. Jika mendaftarkan modul, pastikan Anda menentukan dependensi sebagai argumen kedua.

Dibuat pada 14 Mar 2016  ·  23Komentar  ·  Sumber: getsentry/sentry-javascript

Ini adalah urutan file saya di karma.conf.js untuk menjalankan tes karma melati uint..

file: ['app/bower_components/jquery/dist/jquery.min.js',
'app/bower_components/angular/angular.min.js',
'app/bower_components/raven-js/dist/raven.js',
'app/bower_components/raven-js/plugins/angular.js'
]
Meskipun saya menyertakan 'app/bower_components/raven-js/plugins/angular.js' saya mendapatkan kesalahan yang menyatakan modul 'ngRaven' tidak tersedia.

Komentar yang paling membantu

Oh ok ini sebenarnya bertentangan dengan cara Angular di mana kita biasanya melakukan konfigurasi semacam ini dalam modul yang membutuhkan ngRaven , tetapi melakukan cara ini membuatnya tidak mungkin.

Saya pikir Anda harus menentukan ini dalam dokumentasi karena tidak ditentukan sama sekali.

Semua 23 komentar

+1

Apakah ada sesuatu yang dapat ditindaklanjuti yang bisa kita lakukan di sini? Saya sedikit bingung. :)

Oh, jk, saya membaca Stackoverflow. Ini bekerja dengan paket angular-raven, tetapi bukan milik kita.

Per dokumentasi saat ini, plugin sudut penjaga sekarang seharusnya berfungsi

https://docs.getsentry.com/hosted/clients/javascript/integrations/angular/

Mungkinkah direktori 'dist' hilang di 'app/bower_components/raven-js/plugins/angular.js'?

Menurut dokumen [https://docs.getsentry.com/hosted/clients/javascript/integrations/angular/#bower] seharusnya:

<script src="/bower_components/raven-js/dist/plugins/angular.js"></script>

Mengikuti dokumentasi angular tidak dapat menemukan modul untuk saya. Solusi stack overflow bekerja untuk saya.

Mungkinkah direktori 'dist' hilang di 'app/bower_components/raven-js/plugins/angular.js'?

Itu pasti akan berhasil.

Jika seseorang di sini dapat memberi saya contoh konkret, saya akan senang untuk menggali ini.

@benvinegar https://plnkr.co/edit/S1Dk9t?p=preview ini adalah contoh sederhana dari kesalahan,

Berdasarkan https://github.com/getsentry/raven-js/blob/master/docs/integrations/angular.rst
Ia mengatakan:
_Perhatikan bahwa CDN build ini secara otomatis menginisialisasi plugin Angular._

Tetapi mengimpor hanya itu karena menurut dokumen menimbulkan kesalahan, harap periksa log di plnkr
[$ injector:nomod ] Modul 'ngRaven' tidak tersedia! Anda salah mengeja nama modul atau lupa memuatnya. Jika mendaftarkan modul, pastikan Anda menentukan dependensi sebagai argumen kedua.

Mungkin ini hanya salah tafsir dari dokumen?

Ada berita tentang ini? Saya pikir plugin sudut hanya berfungsi untuk CommonJs, karena ini sebenarnya tidak pernah dipanggil ketika hanya memasukkan file. Mohon perbaiki agar kami dapat menggunakan plugin

Berikut adalah contoh paling sederhana yang mengikuti halaman integrasi Anda yang tidak berfungsi: https://plnkr.co/edit/M5nt6Y?p=preview

@RobertBaron @mebibou – dalam kedua contoh Anda perlu mengonfigurasi Raven sebelum menginisialisasi aplikasi Anda. Plugin tidak diinisialisasi sampai Raven.install() dipanggil.

Ini ada di semua contoh dokumentasi , misalnya:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<script src="https://cdn.ravenjs.com/3.6.1/angular/raven.min.js"></script>
<script>Raven.config('https://<key>@app.getsentry.com/<project>').install();</script>

Meskipun dapat dibuat lebih eksplisit bahwa skrip aplikasi Anda (misalnya app.js ) harus datang setelahnya.

Oh ok ini sebenarnya bertentangan dengan cara Angular di mana kita biasanya melakukan konfigurasi semacam ini dalam modul yang membutuhkan ngRaven , tetapi melakukan cara ini membuatnya tidak mungkin.

Saya pikir Anda harus menentukan ini dalam dokumentasi karena tidak ditentukan sama sekali.

+1

Lihat #413, @benvinegar Apakah sudah siap untuk ditangani?

@Sija – mengingat orang-orang terus tersandung dalam hal ini, saya baik-baik saja dengan penggabungan. Meskipun saya khawatir tentang kasus di mana seseorang mungkin telah menyatakan Raven _before_ Angular. Tapi setidaknya pengguna CDN perlu melakukan upgrade secara manual.

Jangan lupa untuk menambahkan sedikit dalam huruf tebal di bawah ini

Gagak
.config('https://@sentry.io/')
.addPlugin(Gagak.Plugins.Angular)
.Install();

@theatrain selain itu Anda perlu menambahkan override pada package.json Anda jika menggunakan gulp inject atau sejenisnya yang menyertakan dependensi paket ke html Anda secara otomatis.
Berikut di bawah ini adalah perbaikan saya sejak saya menggunakan gulp-inject

    "overrides": {
        "raven-js" : {
            "main": [
                "dist/raven.js",
                "dist/plugins/angular.js"
            ]
        }
    },

Saya menemukan solusi yang bagus untuk gerutuan juga karena semuanya diperburuk dan diperkecil:

app.js terlihat seperti:

'use strict';

angular
  .module('sraApp', [
    'ngRaven'
  ]);

Saya membuat file lain bernama raven.js

// redacted sensitive info
Raven
  .config('https://<code>@sentry.io/<myapp>')
  .addPlugin(Raven.Plugins.Angular)
  .install();

Dan di index.html alih-alih skrip sebaris:

<!-- build:js(.) scripts/vendor.js -->
<!-- bower:js -->
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/raven-js/dist/raven.js"></script>
<!-- endbower -->
<!-- Outside of auto-managed bower, but still inside compile -> vender.js -->
<script src="bower_components/raven-js/dist/plugins/angular.js"></script>
<!-- endbuild -->

<!-- build:js({.tmp,app}) scripts/scripts.js -->
<script src="scripts/raven.js"></script>
<script src="scripts/app.js"></script>
<!-- endbuild -->

Sekarang ketika saya grunt build:dist yang mengurangi/mengurangi grunt akan mengoptimalkan skrip saya sehingga plugin dapat didaftarkan. Melakukan skrip sebaris tidak akan menyebabkan optimasi sehingga window.angular tidak akan tepat untuk plugin untuk memuat sendiri secara otomatis.

Secara keseluruhan alurnya adalah sebagai berikut (dokumentasi sudah benar)

  • bawa angular
  • bawa raven
  • bawa raven/plugins/angular.js
  • config/addPlugin/install ngRaven tetapi dilakukan dengan benar untuk memperhitungkan uglification/minification

Juga hal lain yang perlu diperhatikan bahwa sebagian besar konfigurasi dapat terjadi nanti (meskipun Anda melewatkan tag pada masalah apa pun selama bootstrap)

Misalnya konfigurasi heroku dimuat setelah fakta.

'use strict';

angular.module('sraApp')
  .run(function (Raven, HEROKU_APP_ID, HEROKU_APP_NAME, HEROKU_RELEASE_CREATED_AT, HEROKU_RELEASE_VERSION, HEROKU_SLUG_COMMIT, HEROKU_SLUG_DESCRIPTION, NODE_ENV) {
    Raven.setRelease(HEROKU_RELEASE_VERSION);
    Raven.setEnvironment(NODE_ENV);
    Raven.setTagsContext({
      release_date: HEROKU_RELEASE_CREATED_AT,
      git_commit: HEROKU_SLUG_COMMIT,
      slug_description: HEROKU_SLUG_DESCRIPTION,
      application: {
        name: HEROKU_APP_NAME,
        id: HEROKU_APP_ID,
      }
    });
  });

Ada pembaruan tentang ini? Juga mendapat masalah di sini dengan rangkaian tes karma kami.

@xeroxoid Kami juga memiliki masalah dengan ini selama tes karma dan dapat mengatasinya.

Dalam kasus kami, kami melewatkan rutinitas Raven.config().addPlugin().install() di lingkungan pengujian karena kami tidak ingin mereka dikirim ke penjaga.

Masalahnya adalah raven-js tidak melakukan hal-hal "dengan cara sudut" dengan modul - dan sebaliknya hanya mendaftarkan modul ngRaven jika Anda memanggil Raven.config() dengan DSN.

Metode addPlugin() hanya mendaftarkan modul sudut jika konfigurasi telah diatur dengan benar (misalnya dengan url DSN yang ditentukan).

Untuk memperbaikinya, kami membuatnya agar Raven.config().addPlugin().install() selalu dijalankan bahkan di suite pengujian kami, kami menggunakan url DSN normal kami dan kemudian menggunakan metode config.shouldSendCallback untuk memblokir pengiriman ke penjaga di lingkungan pengujian .

Ini memungkinkan raven-js untuk mendaftarkan modul sudut dengan benar.

Semoga membantu!

Kami melakukan hal yang sama, tetapi kami memasukkan DSN palsu sebagai gantinya (ini untuk dev env kami). Sesuatu seperti https://[email protected]/1 berfungsi dengan baik (gagak tampaknya melakukan sejumlah penegakan pada properti URL, jadi nama pengguna harus ada bersama dengan jalurnya).

Tutup karena lama tidak aktif. Utas ini juga berisi beberapa solusi untuk berjaga-jaga. Silakan membuka kembali masalah ini jika masih relevan dengan cara apa pun.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat