Sentry-javascript: λͺ¨λ“ˆ 'ngRaven'을 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€! λͺ¨λ“ˆ 이름을 잘λͺ» μž…λ ₯ν–ˆκ±°λ‚˜ λ‘œλ“œν•˜λŠ” 것을 μžŠμ—ˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“ˆμ„ λ“±λ‘ν•˜λŠ” 경우 쒅속성을 두 번째 인수둜 지정해야 ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2016λ…„ 03μ›” 14일  Β·  23μ½”λ©˜νŠΈ  Β·  좜처: getsentry/sentry-javascript

이것은 karma jasmine uint ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ karma.conf.js의 파일 μˆœμ„œμž…λ‹ˆλ‹€.

파일: ['app/bower_components/jquery/dist/jquery.min.js',
'μ•±/bower_components/angular/angular.min.js',
'μ•±/bower_components/raven-js/dist/raven.js',
'μ•±/bower_components/raven-js/plugins/angular.js'
]
μ΄λ²€νŠΈμ— 'app/bower_components/raven-js/plugins/angular.js'λ₯Ό ν¬ν•¨ν–ˆμ§€λ§Œ 'ngRaven' λͺ¨λ“ˆμ„ μ‚¬μš©ν•  수 μ—†λ‹€λŠ” 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

였, 이것은 μ‹€μ œλ‘œ ngRaven κ°€ ν•„μš”ν•œ λͺ¨λ“ˆμ—μ„œ μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ ꡬ성을 μˆ˜ν–‰ν•˜λŠ” Angular 방식에 μœ„λ°°λ˜μ§€λ§Œ μ΄λ ‡κ²Œ ν•˜λ©΄ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

μ „ν˜€ λͺ…μ‹œλ˜μ–΄ μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ¬Έμ„œμ— λͺ…μ‹œν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λͺ¨λ“  23 λŒ“κΈ€

+1

μ—¬κΈ°μ„œ μš°λ¦¬κ°€ ν•  수 μžˆλŠ” 행동이 μžˆμŠ΅λ‹ˆκΉŒ? 쑰금 ν˜Όλž€μŠ€λŸ½μŠ΅λ‹ˆλ‹€. :)

였, jk, λ‚˜λŠ” Stackoverflowλ₯Ό μ½μ—ˆμŠ΅λ‹ˆλ‹€. angular-raven νŒ¨ν‚€μ§€μ—μ„œλŠ” μž‘λ™ν•˜μ§€λ§Œ 우리 νŒ¨ν‚€μ§€μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ λ¬Έμ„œμ— λ”°λ₯΄λ©΄ 이제 Sentry Angular ν”ŒλŸ¬κ·ΈμΈμ΄ μž‘λ™ν•©λ‹ˆλ‹€.

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

'app/bower_components/raven-js/plugins/angular.js'μ—μ„œ 디렉토리 'dist'κ°€ λˆ„λ½λ˜μ—ˆμ„ 수 μžˆμŠ΅λ‹ˆκΉŒ?

λ¬Έμ„œ [https://docs.getsentry.com/hosted/clients/javascript/integrations/angular/#bower]에 λ”°λ₯΄λ©΄ λ‹€μŒκ³Ό κ°™μ•„μ•Ό ν•©λ‹ˆλ‹€.

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

λ¬Έμ„œ Angularλ₯Ό 따라가면 λ‚˜λ₯Ό μœ„ν•œ λͺ¨λ“ˆμ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€. μŠ€νƒ μ˜€λ²„ν”Œλ‘œ μ†”λ£¨μ…˜μ€ μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.

'app/bower_components/raven-js/plugins/angular.js'μ—μ„œ 디렉토리 'dist'κ°€ λˆ„λ½λ˜μ—ˆμ„ 수 μžˆμŠ΅λ‹ˆκΉŒ?

그것은 ν™•μ‹€νžˆ ν•  κ²ƒμž…λ‹ˆλ‹€.

μ—¬κΈ° λˆ„κ΅°κ°€κ°€ λ‚˜μ—κ²Œ ꡬ체적인 예λ₯Ό μ œκ³΅ν•  수 μžˆλ‹€λ©΄ 기꺼이 이에 β€‹β€‹λŒ€ν•΄ μ‘°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

@benvinegar https://plnkr.co/edit/S1Dk9t?p=preview 이것은 였λ₯˜μ˜ κ°„λ‹¨ν•œ μƒ˜ν”Œμž…λ‹ˆλ‹€.

https://github.com/getsentry/raven-js/blob/master/docs/integrations/angular.rst 기반
그것은 λ§ν•œλ‹€:
_이 CDN λΉŒλ“œλŠ” Angular ν”ŒλŸ¬κ·ΈμΈμ„ μžλ™μœΌλ‘œ μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€._

κ·ΈλŸ¬λ‚˜ λ¬Έμ„œμ—μ„œ 였λ₯˜κ°€ λ°œμƒν•˜λŠ” κ²ƒμ²˜λŸΌ κ°€μ Έμ˜€κΈ°λ§Œ ν•˜λ©΄ plnkrμ—μ„œ 둜그λ₯Ό ν™•μΈν•˜μ‹­μ‹œμ˜€.
[$ injection:nomod ] 'ngRaven' λͺ¨λ“ˆμ„ μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€! λͺ¨λ“ˆ 이름을 잘λͺ» μž…λ ₯ν–ˆκ±°λ‚˜ λ‘œλ“œν•˜λŠ” 것을 μžŠμ—ˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“ˆμ„ λ“±λ‘ν•˜λŠ” 경우 쒅속성을 두 번째 인수둜 지정해야 ν•©λ‹ˆλ‹€.

μ•„λ§ˆλ„ 이것은 λ¬Έμ„œμ˜ μ˜€ν•΄ μΌλΏμž…λ‹ˆκΉŒ?

이것에 λŒ€ν•œ μ†Œμ‹μ΄ μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” 이후 각 ν”ŒλŸ¬κ·ΈμΈ 만, CommonJs μž‘λ™ 생각 이가 λ°”λ‘œ νŒŒμΌμ„ 포함 ν•  λ•Œ μ‹€μ œλ‘œ ν˜ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν”ŒλŸ¬κ·ΈμΈμ„ μ‚¬μš©ν•  수 μžˆλ„λ‘ μˆ˜μ •ν•˜μ‹­μ‹œμ˜€.

λ‹€μŒμ€ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 톡합 νŽ˜μ΄μ§€ λ‹€μŒμ˜ κ°€μž₯ κ°„λ‹¨ν•œ μ˜ˆμž…λ‹ˆλ‹€. https://plnkr.co/edit/M5nt6Y?p=preview

@RobertBaron @mebibou – 두 예제 λͺ¨λ‘ 앱을 μ΄ˆκΈ°ν™”ν•˜κΈ° 전에 Raven을 ꡬ성해야 ν•©λ‹ˆλ‹€. ν”ŒλŸ¬κ·ΈμΈμ€ Raven.install() κ°€ 호좜될 λ•ŒκΉŒμ§€ μ΄ˆκΈ°ν™”λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이것은 λͺ¨λ“  λ¬Έμ„œ 예제 에

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

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 슀크립트(예: app.js )κ°€ λ‚˜μ€‘μ— 와야 ν•œλ‹€λŠ” 것이 더 λͺ…ν™•ν•΄μ§ˆ 수 μžˆμ§€λ§Œ.

였, 이것은 μ‹€μ œλ‘œ ngRaven κ°€ ν•„μš”ν•œ λͺ¨λ“ˆμ—μ„œ μ΄λŸ¬ν•œ μ’…λ₯˜μ˜ ꡬ성을 μˆ˜ν–‰ν•˜λŠ” Angular 방식에 μœ„λ°°λ˜μ§€λ§Œ μ΄λ ‡κ²Œ ν•˜λ©΄ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

μ „ν˜€ λͺ…μ‹œλ˜μ–΄ μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ¬Έμ„œμ— λͺ…μ‹œν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

+1

#413, @benvinegarλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

@Sija – μ‚¬λžŒλ“€μ΄ 이것에 계속 κ±Έλ € λ„˜μ–΄μ§„λ‹€λŠ” 점을 κ°μ•ˆν•  λ•Œ λ³‘ν•©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. λˆ„κ΅°κ°€ Raven을 Angular _before_ Angular둜 μ„ μ–Έν–ˆμ„ μˆ˜λ„ μžˆλŠ” κ²½μš°κ°€ κ±±μ •λ˜μ§€λ§Œ. κ·ΈλŸ¬λ‚˜ μ΅œμ†Œν•œ CDN μ‚¬μš©μžλŠ” μˆ˜λ™μœΌλ‘œ μ—…κ·Έλ ˆμ΄λ“œν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ•„λž˜ ꡡ게 ν‘œμ‹œλœ λΉ„νŠΈλ₯Ό μΆ”κ°€ν•˜λŠ” 것을 μžŠμ§€ λ§ˆμ‹­μ‹œμ˜€.

κ°ˆκ°€λ§ˆκ·€
.config('https://@sentry.io/')
.addPlugin(Raven.Plugins.Angular)
.μ„€μΉ˜();

@theatrain 외에
λ‹€μŒμ€ gulp-injectλ₯Ό μ‚¬μš©ν•œ μ΄ν›„μ˜ μˆ˜μ • μ‚¬ν•­μž…λ‹ˆλ‹€.

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

λͺ¨λ“  것이 λ―Έν™”λ˜κ³  μΆ•μ†Œλ˜μ—ˆκΈ° λ•Œλ¬Έμ— grunt에 λŒ€ν•œ 쒋은 ν•΄κ²° 방법도 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.

λ‚΄ app.js λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

'use strict';

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

raven.js λΌλŠ” λ‹€λ₯Έ νŒŒμΌμ„ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

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

그리고 인라인 슀크립트 λŒ€μ‹  index.htmlμ—μ„œ:

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

이제 λ‚΄κ°€ grunt build:dist ν•˜λ©΄ 그런트λ₯Ό λ―Έν™”/μ΅œμ†Œν™”ν•˜μ—¬ ν”ŒλŸ¬κ·ΈμΈμ„ 등둝할 수 μžˆλ„λ‘ 슀크립트λ₯Ό μ΅œμ ν™”ν•©λ‹ˆλ‹€. 인라인 슀크립트λ₯Ό μˆ˜ν–‰ν•˜λ©΄ μ΅œμ ν™”κ°€ λ°œμƒν•˜μ§€ μ•ŠμœΌλ―€λ‘œ window.angularλŠ” ν”ŒλŸ¬κ·ΈμΈμ΄ μžλ™μœΌλ‘œ λ‘œλ“œλ˜λŠ” 데 μ ν•©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ „λ°˜μ μΈ 흐름은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€(λ¬Έμ„œκ°€ 정확함).

  • angular λ“€μ—¬μ˜€λ‹€
  • raven κ°€μ Έμ˜€κΈ°
  • raven/plugins/angular.js κ°€μ Έμ˜€κΈ°
  • config/addPlugin/install ngRaven ν•˜μ§€λ§Œ uglification/minification을 κ³ λ €ν•˜μ—¬ μ œλŒ€λ‘œ μˆ˜ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ λŒ€λΆ€λΆ„μ˜ ꡬ성이 λ‚˜μ€‘μ— λ°œμƒν•  수 μžˆλ‹€λŠ” 점에 μœ μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€(λΆ€νŠΈμŠ€νŠΈλž© 쀑에 λ¬Έμ œμ— λŒ€ν•œ νƒœκ·Έλ₯Ό λ†“μΉ˜λ”λΌλ„).

예λ₯Ό λ“€μ–΄ heroku ꡬ성은 사싀 후에 λ‘œλ“œλ©λ‹ˆλ‹€.

'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,
      }
    });
  });

이에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ? μΉ΄λ₯΄λ§ˆ ν…ŒμŠ€νŠΈ μŠ€μœ„νŠΈμ—λ„ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

@xeroxoid μΉ΄λ₯΄λ§ˆ ν…ŒμŠ€νŠΈ 쀑에 이것에 λ¬Έμ œκ°€ μžˆμ—ˆκ³  ν•΄κ²°ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

우리의 경우 μš°λ¦¬λŠ” ν…ŒμŠ€νŠΈ ν™˜κ²½μ—μ„œ Raven.config().addPlugin().install() 루틴을 μ„ΌνŠΈλ¦¬λ‘œ λ³΄λ‚΄λŠ” 것을 μ›ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— κ±΄λ„ˆλ›°μ—ˆμŠ΅λ‹ˆλ‹€.

λ¬Έμ œλŠ” raven-jsκ°€ λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜μ—¬ "각도 방식"으둜 μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šκ³  λŒ€μ‹  DSN으둜 Raven.config() λ₯Ό ν˜ΈμΆœν•œ κ²½μš°μ—λ§Œ ngRaven λͺ¨λ“ˆμ„ λ“±λ‘ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

addPlugin() λ©”μ†Œλ“œλŠ” ꡬ성이 μ˜¬λ°”λ₯΄κ²Œ μ„€μ •λœ κ²½μš°μ—λ§Œ angular λͺ¨λ“ˆμ„ λ“±λ‘ν•©λ‹ˆλ‹€(예: μ •μ˜λœ DSN url μ‚¬μš©).

이λ₯Ό μˆ˜μ •ν•˜κΈ° μœ„ν•΄ ν…ŒμŠ€νŠΈ μŠ€μœ„νŠΈμ—μ„œλ„ Raven.config().addPlugin().install() κ°€ 항상 μ‹€ν–‰λ˜λ„λ‘ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. 일반 DSN url을 μ‚¬μš©ν•œ λ‹€μŒ config.shouldSendCallback λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ ν…ŒμŠ€νŠΈ ν™˜κ²½μ—μ„œ sentry둜 λ³΄λ‚΄λŠ” 것을 μ°¨λ‹¨ν•©λ‹ˆλ‹€. .

이λ₯Ό 톡해 raven-jsλŠ” angular λͺ¨λ“ˆμ„ μ˜¬λ°”λ₯΄κ²Œ 등둝할 수 μžˆμŠ΅λ‹ˆλ‹€.

도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€!

μš°λ¦¬λ„ λ˜‘κ°™μ΄ ν•˜κ³  μžˆμ§€λ§Œ λŒ€μ‹  κ°€μ§œ DSN을 μ „λ‹¬ν•©λ‹ˆλ‹€(이것은 우리의 개발 ν™˜κ²½μ„ μœ„ν•œ κ²ƒμž…λ‹ˆλ‹€). https://[email protected]/1 와 같은 것은 잘 μž‘λ™ν•©λ‹ˆλ‹€(raven은 URL 속성에 λŒ€ν•΄ μ–΄λŠ 정도 μ‹œν–‰ν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μ΄λ―€λ‘œ μ‚¬μš©μž 이름이 κ²½λ‘œμ™€ ν•¨κ»˜ μžˆμ–΄μ•Ό 함).

μž₯κΈ°κ°„ ν™œλ™ν•˜μ§€ μ•Šμ•„ 문을 λ‹«μŠ΅λ‹ˆλ‹€. 이 μŠ€λ ˆλ“œμ—λŠ” 만일의 경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ λͺ‡ 가지 ν•΄κ²° 방법이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ μ‹μœΌλ‘œλ“  μ—¬μ „νžˆ 관련성이 μžˆλŠ” 경우 이 문제λ₯Ό 자유둭게 λ‹€μ‹œ μ—¬μ‹­μ‹œμ˜€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰