Skip to content

Commit cf4617c

Browse files
committed
Don't double-load raven-js
We were already loading raven via a script tag in the SSR template, but then still including the `raven-js` package in the frontend. This fixes it by only using the global raven from the script tag.
1 parent 081a7ac commit cf4617c

File tree

10 files changed

+64
-80
lines changed

10 files changed

+64
-80
lines changed

api/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@
8888
"prismjs": "^1.15.0",
8989
"query-string": "5.1.1",
9090
"raven": "^2.6.4",
91-
"raven-js": "^3.27.0",
9291
"react": "^15.4.1",
9392
"react-app-rewire-styled-components": "^3.0.2",
9493
"react-app-rewired": "^1.6.2",

api/yarn.lock

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7668,11 +7668,6 @@ range-parser@~1.2.0:
76687668
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
76697669
integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
76707670

7671-
raven-js@^3.27.0:
7672-
version "3.27.0"
7673-
resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.27.0.tgz#9f47c03e17933ce756e189f3669d49c441c1ba6e"
7674-
integrity sha512-vChdOL+yzecfnGA+B5EhEZkJ3kY3KlMzxEhShKh6Vdtooyl0yZfYNFQfYzgMf2v4pyQa+OTZ5esTxxgOOZDHqw==
7675-
76767671
raven@^2.6.4:
76777672
version "2.6.4"
76787673
resolved "https://registry.yarnpkg.com/raven/-/raven-2.6.4.tgz#458d4a380c8fbb59e0150c655625aaf60c167ea3"

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@
145145
"query-string": "5.1.1",
146146
"raf": "^3.4.0",
147147
"raven": "^2.6.4",
148-
"raven-js": "^3.27.0",
149148
"react": "16.4.2",
150149
"react-apollo": "^2.2.4",
151150
"react-app-rewire-styled-components": "^3.0.0",

public/index.html

Lines changed: 32 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -32,47 +32,42 @@
3232
a.defer = 1;
3333
a.src = g;
3434
m.parentNode.insertBefore(a, m);
35-
})
36-
(
37-
window,
38-
document,
39-
'script',
40-
'https://www.google-analytics.com/analytics.js',
41-
'ga'
42-
);
35+
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
4336

44-
ga('create', 'UA-92673909-1', 'auto');
45-
ga('send', 'pageview');
46-
ga('set', 'anonymizeIp', true);
47-
</script>
48-
49-
<script type="text/javascript">
50-
(function(e,t){var n=e.amplitude||{_q:[],_iq:{}};var r=t.createElement("script")
51-
;r.type="text/javascript";r.async=true
52-
;r.src="https://cdn.amplitude.com/libs/amplitude-4.2.1-min.gz.js"
53-
;r.onload=function(){if(e.amplitude.runQueuedFunctions){
54-
e.amplitude.runQueuedFunctions()}else{
55-
console.log("[Amplitude] Error: could not load SDK")}}
56-
;var i=t.getElementsByTagName("script")[0];i.parentNode.insertBefore(r,i)
57-
;function s(e,t){e.prototype[t]=function(){
58-
this._q.push([t].concat(Array.prototype.slice.call(arguments,0)));return this}}
59-
var o=function(){this._q=[];return this}
60-
;var a=["add","append","clearAll","prepend","set","setOnce","unset"]
61-
;for(var u=0;u<a.length;u++){s(o,a[u])}n.Identify=o;var c=function(){this._q=[]
62-
;return this}
63-
;var l=["setProductId","setQuantity","setPrice","setRevenueType","setEventProperties"]
64-
;for(var p=0;p<l.length;p++){s(c,l[p])}n.Revenue=c
65-
;var d=["init","logEvent","logRevenue","setUserId","setUserProperties","setOptOut","setVersionName","setDomain","setDeviceId","setGlobalUserProperties","identify","clearUserProperties","setGroup","logRevenueV2","regenerateDeviceId","logEventWithTimestamp","logEventWithGroups","setSessionId","resetSessionId"]
66-
;function v(e){function t(t){e[t]=function(){
67-
e._q.push([t].concat(Array.prototype.slice.call(arguments,0)))}}
68-
for(var n=0;n<d.length;n++){t(d[n])}}v(n);n.getInstance=function(e){
69-
e=(!e||e.length===0?"$default_instance":e).toLowerCase()
70-
;if(!n._iq.hasOwnProperty(e)){n._iq[e]={_q:[]};v(n._iq[e])}return n._iq[e]}
71-
;e.amplitude=n})(window,document);
72-
</script>
37+
ga('create', 'UA-92673909-1', 'auto');
38+
ga('send', 'pageview');
39+
ga('set', 'anonymizeIp', true);
40+
</script>
7341

42+
<script type="text/javascript">
43+
(function(e,t){var n=e.amplitude||{_q:[],_iq:{}};var r=t.createElement("script")
44+
;r.type="text/javascript";r.async=true
45+
;r.src="https://cdn.amplitude.com/libs/amplitude-4.2.1-min.gz.js"
46+
;r.onload=function(){if(e.amplitude.runQueuedFunctions){
47+
e.amplitude.runQueuedFunctions()}else{
48+
console.log("[Amplitude] Error: could not load SDK")}}
49+
;var i=t.getElementsByTagName("script")[0];i.parentNode.insertBefore(r,i)
50+
;function s(e,t){e.prototype[t]=function(){
51+
this._q.push([t].concat(Array.prototype.slice.call(arguments,0)));return this}}
52+
var o=function(){this._q=[];return this}
53+
;var a=["add","append","clearAll","prepend","set","setOnce","unset"]
54+
;for(var u=0;u<a.length;u++){s(o,a[u])}n.Identify=o;var c=function(){this._q=[]
55+
;return this}
56+
;var l=["setProductId","setQuantity","setPrice","setRevenueType","setEventProperties"]
57+
;for(var p=0;p<l.length;p++){s(c,l[p])}n.Revenue=c
58+
;var d=["init","logEvent","logRevenue","setUserId","setUserProperties","setOptOut","setVersionName","setDomain","setDeviceId","setGlobalUserProperties","identify","clearUserProperties","setGroup","logRevenueV2","regenerateDeviceId","logEventWithTimestamp","logEventWithGroups","setSessionId","resetSessionId"]
59+
;function v(e){function t(t){e[t]=function(){
60+
e._q.push([t].concat(Array.prototype.slice.call(arguments,0)))}}
61+
for(var n=0;n<d.length;n++){t(d[n])}}v(n);n.getInstance=function(e){
62+
e=(!e||e.length===0?"$default_instance":e).toLowerCase()
63+
;if(!n._iq.hasOwnProperty(e)){n._iq[e]={_q:[]};v(n._iq[e])}return n._iq[e]}
64+
;e.amplitude=n})(window,document);
65+
</script>
7466
</head>
7567
<body>
7668
<div id="root"></div>
69+
<script defer="defer" src="https://cdn.ravenjs.com/3.14.0/raven.min.js" crossorigin="anonymous"></script>
70+
<script defer="defer" src="/install-raven.js"></script>
71+
<script defer="defer" type="text/javascript" src="https://cdn.polyfill.io/v2/polyfill.min.js?features=default,Array.prototype.find,Symbol.iterator"></script>
7772
</body>
7873
</html>

shared/clients/analytics/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { createTrack } from './track';
44
import { createSetUser } from './setUser';
55
import { createUnsetUser } from './unsetUser';
66
import * as transformations from './transformations';
7-
require('./raven');
87

98
export type AmplitudeClient = 'web' | 'desktop' | 'mobile';
109

shared/clients/analytics/raven.js

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/actions/authentication.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { setUser, unsetUser } from 'src/helpers/analytics';
22
import { removeItemFromStorage, storeItem } from 'src/helpers/localStorage';
3-
import Raven from 'raven-js';
43

54
export const logout = dispatch => {
65
// clear localStorage
@@ -42,8 +41,23 @@ export const saveUserDataToLocalStorage = (user: Object) => async dispatch => {
4241
const { text } = await response.json();
4342
setUser(text);
4443

45-
// logs the user id to sentry errors
46-
Raven.setUserContext({ id: user.id });
44+
// logs the user id to Sentry
45+
// if Raven hasn't loaded yet, try every 5s until it's loaded
46+
if (window.Raven) {
47+
console.log('Raven setUserContext!');
48+
window.Raven.setUserContext({ id: user.id });
49+
} else {
50+
console.log('No Raven :( Try again in 5s');
51+
const interval = setInterval(() => {
52+
console.log('Raven?');
53+
if (window.Raven) {
54+
console.log('Yes! setUserContext');
55+
window.Raven.setUserContext({ id: user.id });
56+
clearInterval(interval);
57+
}
58+
console.log('No :( Try again in 5s');
59+
}, 5000);
60+
}
4761

4862
// save this object to localstorage. This will be used in the future to hydrate
4963
// the store when users visit the homepage

src/components/error/ErrorBoundary.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// @flow
22
import * as React from 'react';
3-
import Raven from 'raven-js';
43
import BlueScreen from '.';
54

65
type State = {
@@ -17,7 +16,7 @@ class ErrorBoundary extends React.Component<Props, State> {
1716

1817
componentDidCatch = (error: any, errorInfo: any) => {
1918
this.setState({ error });
20-
Raven.captureException(error, { extra: errorInfo });
19+
window.Raven && window.Raven.captureException(error, { extra: errorInfo });
2120
};
2221

2322
render() {

src/helpers/sentry-redux-middleware.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
1-
import Raven from 'raven-js';
2-
31
const crashReporter = store => next => action => {
42
// Handle THROW_ERROR actions
53
if (action.type === 'THROW_ERROR') {
64
console.error('Caught an exception!', action.err);
75
if (process.env.NODE_ENV !== 'development') {
8-
Raven.captureException(action.err, {
9-
extra: {
10-
action,
11-
state: store.getState(),
12-
},
13-
});
6+
window.Raven &&
7+
window.Raven.captureException(action.err, {
8+
extra: {
9+
action,
10+
state: store.getState(),
11+
},
12+
});
1413
}
1514
}
1615

@@ -19,12 +18,13 @@ const crashReporter = store => next => action => {
1918
} catch (err) {
2019
console.error('Caught an exception!', err);
2120
if (process.env.NODE_ENV !== 'development') {
22-
Raven.captureException(err, {
23-
extra: {
24-
action,
25-
state: store.getState(),
26-
},
27-
});
21+
window.Raven &&
22+
window.Raven.captureException(err, {
23+
extra: {
24+
action,
25+
state: store.getState(),
26+
},
27+
});
2828
}
2929
throw err;
3030
}

yarn.lock

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10033,10 +10033,6 @@ range-parser@^1.0.3, range-parser@~1.2.0:
1003310033
version "1.2.0"
1003410034
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
1003510035

10036-
raven-js@^3.27.0:
10037-
version "3.27.0"
10038-
resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.27.0.tgz#9f47c03e17933ce756e189f3669d49c441c1ba6e"
10039-
1004010036
raven@^2.6.4:
1004110037
version "2.6.4"
1004210038
resolved "https://registry.yarnpkg.com/raven/-/raven-2.6.4.tgz#458d4a380c8fbb59e0150c655625aaf60c167ea3"

0 commit comments

Comments
 (0)