cocos creator接入sentry

编程入门 行业动态 更新时间:2024-10-10 04:27:58

<a href=https://www.elefans.com/category/jswz/34/1765858.html style=cocos creator接入sentry"/>

cocos creator接入sentry

cocos creator接入sentry

有很长时间没有写过东西了,最近闲来无事,随便写点东西
上次写东西仿佛还是大学的时候。。。

毕业之后一直在做幼儿教育类的app,从认字做到数学再到音乐,经历了不少的项目,确实学到了很多东西。

现在市面上的教育类app还是挺多的(小朋友的钱好赚呀。。。)
大部分项目用的都是cocos creator+typescript

啊 不废话了 今天来说说 sentry

sentry是一个前端错误监控系统,实际项目中还是很好用的,实时监控到项目中发生的报错,如果遇到严重的错误,立马热更修复掉,能将影响用户数尽量降到最低。

1.首先是安装

通过docker安装sentry还是很方便的,docker的安装这边就不多做赘述了,直接开搞。。。

需要注意的是,sentry需要服务器至少有2400M的RAM

//克隆sentry
git clone .git
// 进去
cd onpremise
// 安装
./install.sh

然后静静的等待漫长的安装过程。。。


好的完成了
然后就是按照提示创建用户了,

创建完成后运行

docker-compose up -d

安装就完成了

我这边安装在了本地,sentry的默认端口是9000
进去127.0.0.1:9000,应该就能进去sentry的界面了

输入刚刚的账户密码

啊 ~进来了。。。。。。

2.接下来是接进cocos

创建一个node.js项目

接下来按照提示在你的cocos项目中添加sentry的依赖

# Using yarn
yarn add @sentry/node @sentry/tracing# Using npm
npm install --save @sentry/node @sentry/tracing

3.接下来是报告错误的脚本

当遇到报错的时候sentry会自动将错误上报,同时我们也可以在某些地方自己手动去报错,sentry提供了很多信息的展示,这边我们加上了用户id的展示,可以根据需求自行添加别的信息,也可以将报错做一些处理后再上报,这边仅做一个展示,就不写多余的代码了。:)

class ErrorReport {init() {Sentry.init({dsn: 'http://',environment: 'dev',tracesSampleRate: 1.0,});this.trackUser();if (cc.sys.isNative && window) {console.log('start report');// 监听全局报错window.__errorHandler = (file: string, line: number, msg: string, stack: string) => {try {Sentry.captureException(stack);} catch (e) {console.error(`Failed to report error in ErrorAnalytics ${e}`, e.stack);}};}}/*** 跟踪用户信息*/public trackUser() {try {const id = PlatTs.getUserID();const sentryUser: Sentry.User = {id: id,};Sentry.configureScope((scope) => {scope.setUser(sentryUser);});} catch (e) {console.error(`Failed to track user in ErrorAnalytics ${e}`, e.stack);}}/*** 手动报错* @param e*/reportError(e: any) {Sentry.captureException(e);}
}export const errorReport = new ErrorReport();

到这里理论上sentry应该已经能接到报错信息了,但是如果项目中用的是typescript可能还是收不到报错信息,一番debug后发现似乎是promise将报错都吞掉了。。。

将promise替换成ts-promise就好了

function replacePromise() {local.Promise = tsPromise;try {tsPromise.onPossiblyUnhandledRejection((promise) => {promise.catch((error) => {if (error) {return errorReport.reportError(error);}try {return errorReport.reportError(`Possibly unhandled promise rejection`);} catch {	errorReport.reportError(e);}});});} catch (e) {errorReport.reportError(e);}
}

这样sentry就能正常的收到报错信息了

然鹅

ts-promise会导致sourcemap打包失败。。。

先这样吧= =

更多推荐

cocos creator接入sentry

本文发布于:2024-03-14 15:30:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736774.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:cocos   creator   sentry

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!