@samitouri / QOS-React-2 / commits / b1a949ed45

Adds the filename to JSXTransform error message, making it easier to debug JSX syntax errors.

Fabio M. Costa committed Dec 27, 2013 at 16:42 UTC b1a949ed455dbecc1d7c868d723c76576ae713f9
1 file changed +16 -3
vendor/browser-transforms.js
+16 -3
@@ -41,7 +41,20 @@ var transformCode = function(code, source) {
41 var jsx = docblock.parseAsObject(docblock.extract(code)).jsx;
42
43 if (jsx) {
44 - var transformed = transformReact(code);
44 + try {
45 + var transformed = transformReact(code);
46 + } catch(e) {
47 + if (source) {
48 + if ('fileName' in e) {
49 + // We set `fileName` if it's supported by this error object and
50 + // a `source` was provided.
51 + // The error will correctly point to `source` in Firefox.
52 + e.fileName = source;
53 + }
54 + e.message += '\n at ' + source + ':' + e.lineNumber + ':' + e.column;
55 + }
56 + throw e;
57 + }
58
59 var map = transformed.sourceMap.toJSON();
60 if (source == null) {
@@ -98,7 +111,7 @@ var load = exports.load = function(url, callback) {
111
112 runScripts = function() {
113 var scripts = document.getElementsByTagName('script');
101 -
114 +
115 // Array.prototype.slice cannot be used on NodeList on IE8
116 var jsxScripts = [];
117 for (var i = 0; i < scripts.length; i++) {
@@ -106,7 +119,7 @@ runScripts = function() {
119 jsxScripts.push(scripts.item(i));
120 }
121 }
109 -
122 +
123 console.warn("You are using the in-browser JSX transformer. Be sure to precompile your JSX for production - http://facebook.github.io/react/docs/tooling-integration.html#jsx");
124
125 jsxScripts.forEach(function(script) {