Skip to content
This repository has been archived by the owner on Mar 10, 2022. It is now read-only.

Ravenjs #356

Merged
merged 4 commits into from
Jul 9, 2018
Merged

Ravenjs #356

merged 4 commits into from
Jul 9, 2018

Conversation

annemarie35
Copy link
Contributor

@annemarie35 annemarie35 commented Jun 28, 2018

To do au 03/07:

Raven.setUserContext({
    email: 'matt@example.com',
    id: '123'
})
"breadcrumbs": {
		"values": [{
			"timestamp": 1530622442.789,
			"message": "Geoloc received [object Position]",
			"level": "log",
			"category": "console"
		},

@Ledoux Ledoux requested review from Ledoux and arnoo June 28, 2018 15:14
@Ledoux
Copy link
Contributor

Ledoux commented Jun 28, 2018

yes! nikel!

on teste deja sur l'application staging pour voir si l'app marche correctement?

@augnustin
Copy link
Contributor

Bien joué !

Je ne suis pas sûr de comprendre:

il reste encore la qualité du payload

Effectivement, à la lecture de ce message, je vois difficilement comment débugger quoi que ce soit : main.bundle.js est bundlé et minifié, aucune chance de retrouver l'erreur qui a déclenché ça, si ?

Je n'ai jamais utilisé ce genre d'outils. Pour moi ce qui est chez le client reste chez le client ...

@arnoo
Copy link
Contributor

arnoo commented Jun 28, 2018

Même avec un JS minifié :

  • tu sais qu'il y a eu une erreur non catchée (ce qui n'est pas censé arriver)
  • tu peux avoir une première idée de laquelle
  • tu as la version de l'app et l'id utilisateur pour avoir plus d'infos ensuite

ça a beaucoup de valeur.

@annemarie35
Copy link
Contributor Author

annemarie35 commented Jul 3, 2018

{
	"project": "client_errors",
	"logger": "javascript",
	"platform": "javascript",
	"request": {
		"headers": {
			"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36",
			"Referer": "http://localhost:3000/decouverte/tuto/A9"
		},
		"url": "http://localhost:3000/decouverte/tuto/A9"
	},
	"exception": {
		"values": [{
			"type": "Error",
			"value": "Non-Error exception captured with keys: message, name",
			"stacktrace": {
				"frames": [{
					"filename": "http://localhost:3000/static/js/main.bundle.js",
					"lineno": 49216,
					"colno": 14,
					"function": "HTMLDocument.wrapped",
					"in_app": true
				}, {
					"filename": "http://localhost:3000/static/js/main.bundle.js",
					"lineno": 49336,
					"colno": 12,
					"function": "Raven.captureException",
					"in_app": false
				}]
			}
		}],
		"mechanism": {
			"type": "instrument",
			"handled": true,
			"data": {
				"target": "EventTarget",
				"function": "addEventListener",
				"handler": "bound dispatchInteractiveEvent"
			}
		}
	},
	"transaction": "http://localhost:3000/static/js/main.bundle.js",
	"trimHeadFrames": 0,
	"message": "Non-Error exception captured with keys: message, name",
	"fingerprint": ["222fee9291820c011821499e971c192e"],
	"extra": {
		"__serialized__": {
			"message": "InvalidMonthNo",
			"name": "UserException"
		},
		"session:duration": 66641
	},
	"breadcrumbs": {
		"values": [{
			"timestamp": 1530622442.789,
			"message": "Geoloc received [object Position]",
			"level": "log",
			"category": "console"
		}, {
			"timestamp": 1530622442.939,
			"message": "./src/components/BookingItem.js\n  Line 5:   'TimeAgo' is defined but never used             no-unused-vars\n  Line 15:  'formatter' is assigned a value but never used  no-unused-vars",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622473.761,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function Connect(props, context) {\n        _classCallCheck(this, Connect);\n\n        var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n        _this.version = version;\n        _this.state = {};\n        _this.renderCount = 0;\n        _this.store = props[storeKey] || context[storeKey];\n        _this.propsMode = Boolean(props[storeKey]);\n        _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);\n\n        __WEBPACK_IMPORTED_MODULE_1_invariant___default()(_this.store, 'Could not find \"' + storeKey + '\" in either the context or props of ' + ('\"' + displayName + '\". Either wrap the root component in a <Provider>, ') + ('or explicitly pass \"' + storeKey + '\" as a prop to \"' + displayName + '\".'));\n\n        _this.initSelector();\n        _this.initSubscription();\n        return _this;\n      }",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622473.762,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function _withLogin() {\n        _classCallCheck(this, _withLogin);\n\n        var _this = _possibleConstructorReturn(this, (_withLogin.__proto__ || Object.getPrototypeOf(_withLogin)).call(this));\n\n        _this.componentWillMount = function () {\n          return _this.__componentWillMount__REACT_HOT_LOADER__.apply(_this, arguments);\n        };\n\n        _this.componentWillReceiveProps = function () {\n          return _this.__componentWillReceiveProps__REACT_HOT_LOADER__.apply(_this, arguments);\n        };\n\n        _this.hasBackendRequest = false;\n        _this.state = { hasConfirmRequest: false };\n        return _this;\n      }",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622473.769,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function C(props) {\n    var wrappedComponentRef = props.wrappedComponentRef,\n        remainingProps = _objectWithoutProperties(props, ['wrappedComponentRef']);\n\n    return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_3__Route__[\"a\" /* default */], { render: function render(routeComponentProps) {\n        return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(Component, _extends({}, remainingProps, routeComponentProps, { ref: wrappedComponentRef }));\n      } });\n  }",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622473.775,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function Connect(props, context) {\n        _classCallCheck(this, Connect);\n\n        var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n        _this.version = version;\n        _this.state = {};\n        _this.renderCount = 0;\n        _this.store = props[storeKey] || context[storeKey];\n        _this.propsMode = Boolean(props[storeKey]);\n        _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);\n\n        __WEBPACK_IMPORTED_MODULE_1_invariant___default()(_this.store, 'Could not find \"' + storeKey + '\" in either the context or props of ' + ('\"' + displayName + '\". Either wrap the root component in a <Provider>, ') + ('or explicitly pass \"' + storeKey + '\" as a prop to \"' + displayName + '\".'));\n\n        _this.initSelector();\n        _this.initSubscription();\n        return _this;\n      }",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622473.783,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function r(t,e){E(this,r);var n=M(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,t,e));return n.dispatchSizes=function(){var t=n.getPropsToPass();j(t,n.state.propsToPass)&&n.setState({propsToPass:t})},n.throttledDispatchSizes=k(n.dispatchSizes,n.context.throttle||200),n.getWindowSizesWithFallback=function(){var t=n.context[A]||{},e=t.fallbackHeight,r=t.fallbackWidth;return P({fallbackHeight:void 0===e?null:e,fallbackWidth:void 0===r?null:r})},n.getPropsToPass=function(){return o(n.getWindowSizesWithFallback(),n.props)},n.state={initialSizes:n.getWindowSizesWithFallback(),propsToPass:n.getPropsToPass()},n}",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622473.785,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function Connect(props, context) {\n        _classCallCheck(this, Connect);\n\n        var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n        _this.version = version;\n        _this.state = {};\n        _this.renderCount = 0;\n        _this.store = props[storeKey] || context[storeKey];\n        _this.propsMode = Boolean(props[storeKey]);\n        _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);\n\n        __WEBPACK_IMPORTED_MODULE_1_invariant___default()(_this.store, 'Could not find \"' + storeKey + '\" in either the context or props of ' + ('\"' + displayName + '\". Either wrap the root component in a <Provider>, ') + ('or explicitly pass \"' + storeKey + '\" as a prop to \"' + displayName + '\".'));\n\n        _this.initSelector();\n        _this.initSubscription();\n        return _this;\n      }",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622473.9,
			"message": "./src/components/BookingItem.js\n  Line 5:  'frenchStrings' is defined but never used   no-unused-vars\n  Line 6:  'buildFormatter' is defined but never used  no-unused-vars",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622488.635,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function Connect(props, context) {\n        _classCallCheck(this, Connect);\n\n        var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n        _this.version = version;\n        _this.state = {};\n        _this.renderCount = 0;\n        _this.store = props[storeKey] || context[storeKey];\n        _this.propsMode = Boolean(props[storeKey]);\n        _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);\n\n        __WEBPACK_IMPORTED_MODULE_1_invariant___default()(_this.store, 'Could not find \"' + storeKey + '\" in either the context or props of ' + ('\"' + displayName + '\". Either wrap the root component in a <Provider>, ') + ('or explicitly pass \"' + storeKey + '\" as a prop to \"' + displayName + '\".'));\n\n        _this.initSelector();\n        _this.initSubscription();\n        return _this;\n      }",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622488.636,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function _withLogin() {\n        _classCallCheck(this, _withLogin);\n\n        var _this = _possibleConstructorReturn(this, (_withLogin.__proto__ || Object.getPrototypeOf(_withLogin)).call(this));\n\n        _this.componentWillMount = function () {\n          return _this.__componentWillMount__REACT_HOT_LOADER__.apply(_this, arguments);\n        };\n\n        _this.componentWillReceiveProps = function () {\n          return _this.__componentWillReceiveProps__REACT_HOT_LOADER__.apply(_this, arguments);\n        };\n\n        _this.hasBackendRequest = false;\n        _this.state = { hasConfirmRequest: false };\n        return _this;\n      }",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622488.638,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function C(props) {\n    var wrappedComponentRef = props.wrappedComponentRef,\n        remainingProps = _objectWithoutProperties(props, ['wrappedComponentRef']);\n\n    return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_3__Route__[\"a\" /* default */], { render: function render(routeComponentProps) {\n        return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(Component, _extends({}, remainingProps, routeComponentProps, { ref: wrappedComponentRef }));\n      } });\n  }",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622488.639,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function Connect(props, context) {\n        _classCallCheck(this, Connect);\n\n        var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n        _this.version = version;\n        _this.state = {};\n        _this.renderCount = 0;\n        _this.store = props[storeKey] || context[storeKey];\n        _this.propsMode = Boolean(props[storeKey]);\n        _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);\n\n        __WEBPACK_IMPORTED_MODULE_1_invariant___default()(_this.store, 'Could not find \"' + storeKey + '\" in either the context or props of ' + ('\"' + displayName + '\". Either wrap the root component in a <Provider>, ') + ('or explicitly pass \"' + storeKey + '\" as a prop to \"' + displayName + '\".'));\n\n        _this.initSelector();\n        _this.initSubscription();\n        return _this;\n      }",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622488.641,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function r(t,e){E(this,r);var n=M(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,t,e));return n.dispatchSizes=function(){var t=n.getPropsToPass();j(t,n.state.propsToPass)&&n.setState({propsToPass:t})},n.throttledDispatchSizes=k(n.dispatchSizes,n.context.throttle||200),n.getWindowSizesWithFallback=function(){var t=n.context[A]||{},e=t.fallbackHeight,r=t.fallbackWidth;return P({fallbackHeight:void 0===e?null:e,fallbackWidth:void 0===r?null:r})},n.getPropsToPass=function(){return o(n.getWindowSizesWithFallback(),n.props)},n.state={initialSizes:n.getWindowSizesWithFallback(),propsToPass:n.getPropsToPass()},n}",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622488.643,
			"message": "React Hot Loader: this component is not accepted by Hot Loader. \nPlease check is it extracted as a top level class, a function or a variable. \nClick below to reveal the source location: \n function Connect(props, context) {\n        _classCallCheck(this, Connect);\n\n        var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n        _this.version = version;\n        _this.state = {};\n        _this.renderCount = 0;\n        _this.store = props[storeKey] || context[storeKey];\n        _this.propsMode = Boolean(props[storeKey]);\n        _this.setWrappedInstance = _this.setWrappedInstance.bind(_this);\n\n        __WEBPACK_IMPORTED_MODULE_1_invariant___default()(_this.store, 'Could not find \"' + storeKey + '\" in either the context or props of ' + ('\"' + displayName + '\". Either wrap the root component in a <Provider>, ') + ('or explicitly pass \"' + storeKey + '\" as a prop to \"' + displayName + '\".'));\n\n        _this.initSelector();\n        _this.initSubscription();\n        return _this;\n      }",
			"level": "warning",
			"category": "console"
		}, {
			"timestamp": 1530622491.317,
			"message": "Geoloc received [object Position]",
			"level": "log",
			"category": "console"
		}, {
			"timestamp": 1530622507.345,
			"category": "ui.click",
			"message": "footer.menu-button.bordered > div.button-wrapper > button > img[alt=\"Mon menu\"]"
		}, {
			"timestamp": 1530622507.362,
			"category": "sentry",
			"message": "Error: Non-Error exception captured with keys: message, name",
			"event_id": "673e824ae9b3408bacb0d164ba01745d",
			"level": "error"
		}, {
			"timestamp": 1530622507.383,
			"message": "The above error occurred in the <Menu> component:\n    in Menu (created by Connect(Menu))\n    in Connect(Menu) (at MenuButton.js:11)\n    in ContentComponent (at Modal.js:126)\n    in div (at Modal.js:125)\n    in div (at Modal.js:108)\n    in div (at Modal.js:100)\n    in Modal (created by Connect(Modal))\n    in Connect(Modal) (at App.js:15)\n    in div (at Debug.js:59)\n    in Debug (created by Connect(Debug))\n    in Connect(Debug) (at App.js:12)\n    in App (at Root.js:31)\n    in Router (created by ConnectedRouter)\n    in ConnectedRouter (at Root.js:30)\n    in Provider (at Root.js:29)\n    in Root (at index.js:21)\n    in AppContainer (at index.js:20)\n\nReact will try to recreate this component tree from scratch using the error boundary you provided, AppContainer.",
			"level": "error",
			"category": "console"
		}, {
			"timestamp": 1530622507.383,
			"message": "[object Object]",
			"level": "error",
			"category": "console"
		}, {
			"timestamp": 1530622507.441,
			"message": "The above error occurred in the <Menu> component:\n    in Menu (created by Connect(Menu))\n    in Connect(Menu) (at MenuButton.js:11)\n    in ContentComponent (at Modal.js:126)\n    in div (at Modal.js:125)\n    in div (at Modal.js:108)\n    in div (at Modal.js:100)\n    in Modal (created by Connect(Modal))\n    in Connect(Modal) (at App.js:15)\n    in div (at Debug.js:59)\n    in Debug (created by Connect(Debug))\n    in Connect(Debug) (at App.js:12)\n    in App (at Root.js:31)\n    in Router (created by ConnectedRouter)\n    in ConnectedRouter (at Root.js:30)\n    in Provider (at Root.js:29)\n    in Root (at index.js:21)\n    in AppContainer (at index.js:20)\n\nConsider adding an error boundary to your tree to customize error handling behavior.\nVisit https://fb.me/react-error-boundaries to learn more about error boundaries.",
			"level": "error",
			"category": "console"
		}]
	},
	"environment": "development",
	"release": "0.1.2",
	"event_id": "79b03d7cb2b5471a8c27d3f819f36d3b"
}

@annemarie35
Copy link
Contributor Author

Autre type de message envoyé par mail

{
	"project": "client_errors",
	"logger": "javascript",
	"platform": "javascript",
	"request": {
		"headers": {
			"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36",
			"Referer": "http://localhost:3000/decouverte/tuto/A9"
		},
		"url": "http://localhost:3000/decouverte/tuto/A9"
	},
	"exception": {
		"values": [{
			"type": "Error",
			"value": "Non-Error exception captured with keys: message, name",
			"stacktrace": {
				"frames": [{
					"filename": "http://localhost:3000/static/js/main.bundle.js",
					"lineno": 49216,
					"colno": 14,
					"function": "HTMLDocument.wrapped",
					"in_app": true
				}, {
					"filename": "http://localhost:3000/static/js/main.bundle.js",
					"lineno": 49336,
					"colno": 12,
					"function": "Raven.captureException",
					"in_app": false
				}]
			}
		}],
		"mechanism": {
			"type": "instrument",
			"handled": true,
			"data": {
				"target": "EventTarget",
				"function": "addEventListener",
				"handler": "bound dispatchInteractiveEvent"
			}
		}
	},
	"transaction": "http://localhost:3000/static/js/main.bundle.js",
	"trimHeadFrames": 0,
	"message": "Non-Error exception captured with keys: message, name",
	"fingerprint": ["222fee9291820c011821499e971c192e"],
	"extra": {
		"__serialized__": {
			"message": "InvalidMonthNo",
			"name": "UserException"
		},
		"session:duration": 10615
	},
	"breadcrumbs": {
		"values": [{
			"timestamp": 1530622683.194,
			"category": "navigation",
			"data": {
				"to": "/decouverte/empty",
				"from": "/decouverte/tuto/A9"
			}
		}, {
			"timestamp": 1530622685.471,
			"message": "Geoloc received [object Position]",
			"level": "log",
			"category": "console"
		}, {
			"timestamp": 1530622687.211,
			"category": "navigation",
			"data": {
				"to": "/decouverte/tuto/A9",
				"from": "/decouverte/empty"
			}
		}, {
			"timestamp": 1530622691.837,
			"category": "ui.click",
			"message": "footer.menu-button.bordered > div.button-wrapper > button > img[alt=\"Mon menu\"]"
		}, {
			"timestamp": 1530622691.853,
			"category": "sentry",
			"message": "Error: Non-Error exception captured with keys: message, name",
			"event_id": "bbf2830d9da34104873e143aebc76a0c",
			"level": "error"
		}, {
			"timestamp": 1530622691.879,
			"message": "The above error occurred in the <Menu> component:\n    in Menu (created by Connect(Menu))\n    in Connect(Menu) (at MenuButton.js:11)\n    in ContentComponent (at Modal.js:126)\n    in div (at Modal.js:125)\n    in div (at Modal.js:108)\n    in div (at Modal.js:100)\n    in Modal (created by Connect(Modal))\n    in Connect(Modal) (at App.js:15)\n    in div (at Debug.js:59)\n    in Debug (created by Connect(Debug))\n    in Connect(Debug) (at App.js:12)\n    in App (at Root.js:31)\n    in Router (created by ConnectedRouter)\n    in ConnectedRouter (at Root.js:30)\n    in Provider (at Root.js:29)\n    in Root (at index.js:15)\n\nConsider adding an error boundary to your tree to customize error handling behavior.\nVisit https://fb.me/react-error-boundaries to learn more about error boundaries.",
			"level": "error",
			"category": "console"
		}]
	},
	"environment": "development",
	"release": "0.1.2",
	"event_id": "72466672ab27476fbaee05f021c6e2a6"
}

@arnoo
Copy link
Contributor

arnoo commented Jul 9, 2018

Cool, bien joué !

@arnoo arnoo merged commit 46b97f8 into master Jul 9, 2018
@arnoo arnoo deleted the ravenjs branch July 9, 2018 09:31
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
4 participants