:art: Support django-onerror

huangqimin001 2 years ago
parent
commit
f21edec268
4 changed files with 30 additions and 0 deletions
  1. 1 0
      kodo/settings.py
  2. 4 0
      kodo/urls.py
  3. 24 0
      page/templates/page/clerk_oauth.html
  4. 1 0
      requirements_dj.txt

+ 1 - 0
kodo/settings.py

@@ -45,6 +45,7 @@ INSTALLED_APPS = (
45 45
     'django.contrib.messages',
46 46
     'django.contrib.staticfiles',
47 47
     'django_file_upload',
48
+    'django_onerror',
48 49
     'django_uniapi',
49 50
     'django_admin',
50 51
     'django_rlog',

+ 4 - 0
kodo/urls.py

@@ -30,6 +30,10 @@ urlpatterns = [
30 30
     url(r'^kodoadmin/', admin.site.urls),
31 31
 ]
32 32
 
33
+urlpatterns += [
34
+    url(r'^e/', include('django_onerror.urls', namespace='django_onerror')),
35
+]
36
+
33 37
 # Mini App
34 38
 urlpatterns += [
35 39
     url(r'^mini/userinfo$', mini_views.get_userinfo_api, name='get_userinfo_api2'),  # 获取用户信息

+ 24 - 0
page/templates/page/clerk_oauth.html

@@ -103,6 +103,30 @@
103 103
             </div>
104 104
         </div>
105 105
 
106
+        <script>
107
+            window.onerror = function(errorMessage, scriptURI, lineNo, columnNo, error) {
108
+                if (['Uncaught ReferenceError: WeixinJSBridge is not defined', 'ResizeObserver loop limit exceeded'].indexOf(errorMessage) >= 0) {
109
+                    return
110
+                }
111
+                // 构建错误对象
112
+                var errorObj = {
113
+                    href: window.location.href,
114
+                    ua: window.navigator.userAgent,
115
+                    lineNo: lineNo || 0,
116
+                    columnNo: columnNo || 0,
117
+                    scriptURI: scriptURI || null,
118
+                    errorMessage: errorMessage || null,
119
+                    stack: error && error.stack ? error.stack : null
120
+                };
121
+                // 构建Http请求
122
+                if (XMLHttpRequest) {
123
+                    var xhr = new XMLHttpRequest();
124
+                    xhr.open('post', '/e/report', true);
125
+                    xhr.setRequestHeader('Content-Type', 'application/json'); // 设置请求头
126
+                    xhr.send(JSON.stringify(errorObj)); // 发送参数
127
+                }
128
+            }
129
+        </script>
106 130
         <script src="//cdnjs.cloudflare.com/ajax/libs/zepto/1.1.6/zepto.min.js"></script>
107 131
         <script>
108 132
             {% if modified %}

+ 1 - 0
requirements_dj.txt

@@ -13,6 +13,7 @@ django-logit==1.1.3
13 13
 django-mobi2==1.0.2
14 14
 django-models-ext==1.1.10
15 15
 django-multidomain==1.1.4
16
+django-onerror==1.1.0
16 17
 django-paginator2==1.1.3
17 18
 django-query==1.0.6
18 19
 django-redis-connector==1.0.4