From 89bcecc76ffaa738099e0c217f8846e60edb1b44 Mon Sep 17 00:00:00 2001 From: Ben Alpert Date: Tue, 11 Feb 2014 00:08:56 -0800 Subject: [PATCH] Disable source maps when defineProperty is missing Fixes #1053. --- vendor/browser-transforms.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/vendor/browser-transforms.js b/vendor/browser-transforms.js index 701693c34a..9de0bc1873 100644 --- a/vendor/browser-transforms.js +++ b/vendor/browser-transforms.js @@ -25,8 +25,16 @@ var transform = require('jstransform').transform; var visitors = require('./fbtransform/visitors').transformVisitors; var docblock = require('jstransform/src/docblock'); +// The source-map library relies on Object.defineProperty, but IE8 doesn't +// support it fully even with es5-sham. Indeed, es5-sham's defineProperty +// throws when Object.prototype.__defineGetter__ is missing, so we skip building +// the source map in that case. +var supportsAccessors = Object.prototype.hasOwnProperty('__defineGetter__'); + function transformReact(source) { - return transform(visitors.react, source, {sourceMap: true}); + return transform(visitors.react, source, { + sourceMap: supportsAccessors + }); } exports.transform = transformReact; @@ -97,6 +105,10 @@ var transformCode = function(code, source) { throw e; } + if (!transformed.sourceMap) { + return transformed.code; + } + var map = transformed.sourceMap.toJSON(); if (source == null) { source = "Inline JSX script";