2021-05-08 vue+sentry 前端異常日志監(jiān)控

敲代碼最糟心不過(guò)遇到自己和測(cè)試的環(huán)境都OK邦泄, 客戶使用有各種各樣還復(fù)現(xiàn)不了的問(wèn)題蠢琳,被逼無(wú)奈只能走到這一步:前端異常日志監(jiān)控!

vue官方文檔如下推薦:

就是說(shuō)在旱, vue有錯(cuò)誤機(jī)制處理errorHandler(錯(cuò)誤機(jī)制處理也有errorCaptured)关斜,而Sentry利用這個(gè)鉤子函數(shù)提供了集成冀值。

那接下來(lái)就是使用了伟端, 首先我們點(diǎn)一下上圖中的官方集成四個(gè)大字,來(lái)到了sentry官方文檔(中關(guān)于VUE的文檔):https://sentry.io/for/vue/夹厌。

Get Started豹爹!

鑒于我跟著前人各種教程走過(guò)不少的坑, 我這筆記是要多啰嗦有多啰嗦的矛纹。

一臂聋、注冊(cè)及創(chuàng)建項(xiàng)目。

注冊(cè)地址: https://sentry.io/signup/?platform=vue

image

選擇vue或南, 創(chuàng)建項(xiàng)目孩等。

image

創(chuàng)建項(xiàng)目之后會(huì)出現(xiàn)詳細(xì)步驟:

image
image

按照上圖指示,在項(xiàng)目目錄下安裝:@sentry/browser 和 @sentry/integrations:

# Using yarn
$ yarn add @sentry/browser
 # Using npm
$ npm install @sentry/browser

 # Using yarn
yarn add @sentry/integrations
 # Using npm
npm install @sentry/integrations

然后main.js中:


import Vue from 'vue' import * as Sentry from '@sentry/browser';
import * as Integrations from '@sentry/integrations';

Sentry.init({
  dsn: 'https://xxxxx@sentry.io/154xxxx', // 上面生成的dns
  integrations: [new Integrations.Vue({Vue, attachProps: true})],
});

這時(shí)候采够, 就可以美滋滋的在開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境等各種環(huán)境上傳異常報(bào)告了肄方。

不過(guò)你會(huì)發(fā)現(xiàn),開(kāi)發(fā)環(huán)境的控制臺(tái)沒(méi)有報(bào)錯(cuò)信息了蹬癌, 只需要配置: logErrors: true就可以了权她。

然后, 我們可能需要一個(gè)版本信息冀瓦, 以便確定問(wèn)題是哪個(gè)版本的問(wèn)題伴奥,例如:release: test@1.0.1。

當(dāng)然翼闽,你會(huì)覺(jué)得開(kāi)發(fā)環(huán)境完全不需要上傳日志啊拾徙,那就加個(gè)判斷吧。

綜上所述感局,main.js代碼變成了這樣:

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">process.env.NODE_ENV === "production" && Sentry.init({
dsn: 'https://xxxxxx@sentry.io/15xxxxx',
integrations: [new Integrations.Vue({Vue, attachProps: true})],
release: 'test@1.0.2',
logErrors: true });</pre>

自己隨便寫(xiě)個(gè)按鈕打印個(gè)未定義的屬性尼啡, 比如console.log(abcd.efg)

效果如下:

image

點(diǎn)進(jìn)去:

image
image

看著一大堆的東西,不過(guò)看不懂定位不到問(wèn)題沒(méi)啥用询微!因?yàn)樯蟼鞯亩际菈嚎s文件崖瞭!

二、上傳Map文件

我踩得坑都在這一步了撑毛,有些教程坑爹啊书聚,配置文件名都可以寫(xiě)錯(cuò)的,填坑填了八百年藻雌,強(qiáng)烈譴責(zé)雌续!

1. 首先,我們需要安裝@sentry/webpack-plugin

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># Using yarn
$ yarn add @sentry/webpack-plugin --dev

Using npm

$ npm install @sentry/webpack-plugin -D</pre>

2. 在引用插件前胯杭, 先找到config/prod.env.js干一件別的事:

// config/prod.env.js 
'use strict' const release = "test@1.0.1";
process.env.RELEASE_VERSION = release;
module.exports = {
  NODE_ENV: '"production"',
  RELEASE_VERSION: `"${release}"`
}

這里是為了統(tǒng)一一下上傳的版本驯杜, 因?yàn)镾entry.init 和 上傳sourceMap的配置需要統(tǒng)一的版本號(hào)。

3. 然后在項(xiàng)目根目錄下新建.sentryclirc文件夾做个,一定不要寫(xiě)錯(cuò)文件名8胄摹滚局!不然你就哭吧。

image


[defaults]
url=https://sentry.io/
org=org
project=project

[auth]
token=token

防止某些寶寶照抄混亂顽频,再解釋下其中參數(shù)具體是什么:

url:上傳的服務(wù)器根目錄藤肢,自己不搭建服務(wù)器不用改。

org:這個(gè)可不是瞎寫(xiě)的冲九,還記得注冊(cè)的時(shí)候填的組織嗎谤草?不記得跟束?沒(méi)關(guān)系莺奸,看下圖:

    ![image](https://upload-images.jianshu.io/upload_images/1953174-6a92e55d19724587.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

再或者:

    ![image](https://upload-images.jianshu.io/upload_images/1953174-7b80df01435481d4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

project:看上圖,就是你的項(xiàng)目名字冀宴。

token:這個(gè)需要生成灭贷, 點(diǎn)擊下圖右上角的Creat New Token:

image

然后勾選project:write, 生成Token

image

生成后粘貼過(guò)來(lái)就行了略贮。

4. 引入并配置插件:

build/webpack.prod.conf.js


const SentryCliPlugin = require("@sentry/webpack-plugin");

 plugins: [ new SentryCliPlugin({
      include: "./dist", // 作用的文件夾
      release: process.env.RELEASE_VERSION, // 一致的版本號(hào)
      configFile: "sentry.properties", // 不用改
      ignore: ['node_modules', 'webpack.config.js'],
      urlPrefix: "~/claimform/"  // 注意這個(gè)甚疟,解釋往下看。 })
]</pre>

<pre style="margin: 0px; padding: 0px; overflow: auto; color: rgb(0, 0, 0); font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(254, 254, 242); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">urlPrefix: 關(guān)于這個(gè)逃延,是要看你線上項(xiàng)目的資源地址览妖,比如</pre>

比如, 你前端訪問(wèn)頁(yè)面是http://test.com.cn/test1/#/login, 同時(shí)你的資源地址是http://test.com.cn/test/static/js/app.xxxxxx.js揽祥,

那么讽膏, 你的urlPrefix: "~/test/"(注意:非ip地址test1)

怎么看資源地址呢, 例如谷歌瀏覽器拄丰, F12控制臺(tái)府树, 或者去Application里面找到對(duì)應(yīng)資源打開(kāi)。

image

再或者料按, 打開(kāi)你的項(xiàng)目config/index.js, 看看build下打的的assetsPublicPath是什么奄侠,如果是: assetsPublicPath: '/test/', 那你的urlPrefix: "~/test/"就是這個(gè), 如果是‘/’那恭喜你的urlPrefix可以不用配置了载矿。

然后yarn build / npm run build垄潮。

怎么查看上傳的效果呢:

image

點(diǎn)進(jìn)去:

image

效果:

image

或者:

image

再看我們的報(bào)錯(cuò)信息, 清楚的看見(jiàn)代碼了:

image

四闷盔、build報(bào)錯(cuò)解決:

  1. ERROR in Sentry CLI Plugin: Command failed: E:\project\claimform\node_modules@sentry\cli\sentry-cli.exe releases new claimform@1.0.3

error: project not found

Add --log-level=[info|debug] or export SENTRY_LOG_LEVEL=[info|debug] to see more output.
Please attach the full debug log to all bug reports.

image

這個(gè)錯(cuò)誤弯洗, 可能是你的org或者project配置錯(cuò)誤,所以找不到項(xiàng)目馁筐, 參照第二點(diǎn)的配置涂召。

  1. ERROR in Sentry CLI Plugin: Command failed: E:\project\claimform\node_modules@sentry\cli\sentry-cli.exe releases new claimform@1.0.3

error: project not found

Add --log-level=[info|debug] or export SENTRY_LOG_LEVEL=[info|debug] to see more output.
Please attach the full debug log to all bug reports.

image

這個(gè), 可能是因?yàn)槟愕呐渲梦募?strong>.sentryclirc寫(xiě)錯(cuò)了敏沉!

~/static/js/app.xxxxxxxxxxx.js (no sourcemap ref)

  • warning: could not determine a source map reference (Could not auto-detect referenced sourcemap for ~/static/js/app.xxxxxxxxx.js.)
image

你項(xiàng)目打包時(shí)候關(guān)閉了生成map文件: config/index.js

build {

productionSourceMap: true, // true表示生成map文件

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末果正,一起剝皮案震驚了整個(gè)濱河市炎码,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秋泳,老刑警劉巖潦闲,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異迫皱,居然都是意外死亡歉闰,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門卓起,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)和敬,“玉大人,你說(shuō)我怎么就攤上這事戏阅≈绲埽” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵奕筐,是天一觀的道長(zhǎng)舱痘。 經(jīng)常有香客問(wèn)我,道長(zhǎng)离赫,這世上最難降的妖魔是什么芭逝? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮渊胸,結(jié)果婚禮上旬盯,老公的妹妹穿的比我還像新娘。我一直安慰自己蹬刷,他們只是感情好瓢捉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著办成,像睡著了一般泡态。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迂卢,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天某弦,我揣著相機(jī)與錄音,去河邊找鬼而克。 笑死靶壮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的员萍。 我是一名探鬼主播腾降,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼碎绎!你這毒婦竟也來(lái)了螃壤?” 一聲冷哼從身側(cè)響起抗果,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奸晴,沒(méi)想到半個(gè)月后冤馏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寄啼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年逮光,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墩划。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涕刚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出走诞,到底是詐尸還是另有隱情副女,我是刑警寧澤蛤高,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布蚣旱,位于F島的核電站,受9級(jí)特大地震影響戴陡,放射性物質(zhì)發(fā)生泄漏塞绿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一恤批、第九天 我趴在偏房一處隱蔽的房頂上張望异吻。 院中可真熱鬧,春花似錦喜庞、人聲如沸诀浪。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)雷猪。三九已至,卻和暖如春晰房,著一層夾襖步出監(jiān)牢的瞬間求摇,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工殊者, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留与境,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓猖吴,卻偏偏與公主長(zhǎng)得像摔刁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子海蔽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 感謝 感謝計(jì)蒜客俞總提出的寶貴的意見(jiàn)感謝Vue Land聊天室中Andreas大神的支持 前言 在項(xiàng)目中共屈,我們使用...
    MrJia1997閱讀 15,414評(píng)論 1 8
  • 新時(shí)代的前端系統(tǒng)上線之后扁位,通常會(huì)遇到以下幾個(gè)問(wèn)題前端報(bào)錯(cuò),用戶使用功能異常趁俊,沒(méi)有通知開(kāi)發(fā)人員的渠道了解到報(bào)錯(cuò)后域仇,因...
    0o北風(fēng)o0閱讀 1,301評(píng)論 0 0
  • 1.前言最近有很多朋友問(wèn)我有沒(méi)有相關(guān)的書(shū)籍推薦,希望能夠自學(xué)一下前端寺擂。正好最近在查閱文章的時(shí)候暇务,發(fā)現(xiàn)有朋友已經(jīng)進(jìn)行...
    AlbenXie閱讀 1,287評(píng)論 0 31
  • 1. 登錄sentry后臺(tái)管理系統(tǒng),沒(méi)有注冊(cè)一個(gè) 這是一個(gè)已經(jīng)搭建好的后臺(tái)http://172.31.1.22:8...
    滾石_c2a6閱讀 20,551評(píng)論 4 0
  • 今天感恩節(jié)哎怔软,感謝一直在我身邊的親朋好友垦细。感恩相遇!感恩不離不棄挡逼。 中午開(kāi)了第一次的黨會(huì)括改,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,562評(píng)論 0 11