Skip to content

Commit 21b2007

Browse files
authored
Window defensiveness (#785)
* Be defensive against window being undefined * Tracekit window defensiveness * Add comments on window defensiveness
1 parent 3d6e248 commit 21b2007

File tree

3 files changed

+22
-7
lines changed

3 files changed

+22
-7
lines changed

src/raven.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@ function now() {
1414
return +new Date();
1515
}
1616

17-
var _window = typeof window !== 'undefined' ? window : undefined;
18-
var _document = _window && _window.document;
17+
// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)
18+
var _window = typeof window !== 'undefined' ? window
19+
: typeof global !== 'undefined' ? global
20+
: typeof self !== 'undefined' ? self
21+
: {};
22+
var _document = _window.document;
1923

2024
// First, check for JSON support
2125
// If there is no JSON, we no-op the core features of Raven

src/singleton.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,12 @@
88

99
var RavenConstructor = require('./raven');
1010

11-
var _Raven = window.Raven;
11+
// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)
12+
var _window = typeof window !== 'undefined' ? window
13+
: typeof global !== 'undefined' ? global
14+
: typeof self !== 'undefined' ? self
15+
: {};
16+
var _Raven = _window.Raven;
1217

1318
var Raven = new RavenConstructor();
1419

@@ -19,7 +24,7 @@ var Raven = new RavenConstructor();
1924
* @return {Raven}
2025
*/
2126
Raven.noConflict = function () {
22-
window.Raven = _Raven;
27+
_window.Raven = _Raven;
2328
return Raven;
2429
};
2530

vendor/TraceKit/tracekit.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ var TraceKit = {
1010
debug: false
1111
};
1212

13+
// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)
14+
var _window = typeof window !== 'undefined' ? window
15+
: typeof global !== 'undefined' ? global
16+
: typeof self !== 'undefined' ? self
17+
: {};
18+
1319
// global reference to slice
1420
var _slice = [].slice;
1521
var UNKNOWN_FUNCTION = '?';
@@ -188,8 +194,8 @@ TraceKit.report = (function reportModuleWrapper() {
188194
if (_onErrorHandlerInstalled) {
189195
return;
190196
}
191-
_oldOnerrorHandler = window.onerror;
192-
window.onerror = traceKitWindowOnError;
197+
_oldOnerrorHandler = _window.onerror;
198+
_window.onerror = traceKitWindowOnError;
193199
_onErrorHandlerInstalled = true;
194200
}
195201

@@ -198,7 +204,7 @@ TraceKit.report = (function reportModuleWrapper() {
198204
if (!_onErrorHandlerInstalled) {
199205
return;
200206
}
201-
window.onerror = _oldOnerrorHandler;
207+
_window.onerror = _oldOnerrorHandler;
202208
_onErrorHandlerInstalled = false;
203209
_oldOnerrorHandler = undefined;
204210
}

0 commit comments

Comments
 (0)