diff --git a/Libraries/Image/resolveAssetSource.js b/Libraries/Image/resolveAssetSource.js index 24fec6ef3..0d160a280 100644 --- a/Libraries/Image/resolveAssetSource.js +++ b/Libraries/Image/resolveAssetSource.js @@ -17,11 +17,26 @@ const AssetSourceResolver = require('AssetSourceResolver'); import type { ResolvedAssetSource } from 'AssetSourceResolver'; let _customSourceTransformer, _serverURL, _scriptURL; + let _sourceCodeScriptURL: ?string; +function getSourceCodeScriptURL(): ?string { + if (_sourceCodeScriptURL) { + return _sourceCodeScriptURL; + } + + let sourceCode = global.nativeExtensions && global.nativeExtensions.SourceCode; + if (!sourceCode) { + const NativeModules = require('NativeModules'); + sourceCode = NativeModules && NativeModules.SourceCode; + } + _sourceCodeScriptURL = sourceCode.scriptURL; + return _sourceCodeScriptURL; +} function getDevServerURL(): ?string { if (_serverURL === undefined) { - const match = _sourceCodeScriptURL && _sourceCodeScriptURL.match(/^https?:\/\/.*?\//); + const sourceCodeScriptURL = getSourceCodeScriptURL(); + const match = sourceCodeScriptURL && sourceCodeScriptURL.match(/^https?:\/\/.*?\//); if (match) { // jsBundle was loaded from network _serverURL = match[0]; @@ -51,7 +66,7 @@ function _coerceLocalScriptURL(scriptURL: ?string): ?string { function getScriptURL(): ?string { if (_scriptURL === undefined) { - _scriptURL = _coerceLocalScriptURL(_sourceCodeScriptURL); + _scriptURL = _coerceLocalScriptURL(getSourceCodeScriptURL()); } return _scriptURL; } @@ -87,13 +102,6 @@ function resolveAssetSource(source: any): ?ResolvedAssetSource { return resolver.defaultAsset(); } -let sourceCode = global.nativeExtensions && global.nativeExtensions.SourceCode; -if (!sourceCode) { - const NativeModules = require('NativeModules'); - sourceCode = NativeModules && NativeModules.SourceCode; -} -_sourceCodeScriptURL = sourceCode && sourceCode.scriptURL; - module.exports = resolveAssetSource; module.exports.pickScale = AssetSourceResolver.pickScale; module.exports.setCustomSourceTransformer = setCustomSourceTransformer;