Fix asset httpServerLocation on Windows.
Summary: Functions from the path module return paths with the native file system path separator. generateAssetModule is using path.join and path.dirname to generate httpServerLocation. That means that on Windows systems, the generated URL path has backslashes rather than forward slashes which breaks the app's ability to retrieve image assets using require('./image.png'). This change fixes this by checking path.sep and replacing backslashes with slashes on systems that require it. Closes https://github.com/facebook/react-native/pull/4416 Reviewed By: svcscm Differential Revision: D2740529 Pulled By: mkonicek fb-gh-sync-id: edae0f6762c7dc1db7af078209e38a2feab1e0a1
This commit is contained in:
parent
053a2294b8
commit
fe3686e126
|
@ -364,6 +364,12 @@ class Bundler {
|
|||
|
||||
generateAssetModule(bundle, module, platform = null) {
|
||||
const relPath = getPathRelativeToRoot(this._projectRoots, module.path);
|
||||
var assetUrlPath = path.join('/assets', path.dirname(relPath));
|
||||
|
||||
// On Windows, change backslashes to slashes to get proper URL path from file path.
|
||||
if (path.sep === '\\') {
|
||||
assetUrlPath = assetUrlPath.replace(/\\/g, '/');
|
||||
}
|
||||
|
||||
return Promise.all([
|
||||
sizeOf(module.path),
|
||||
|
@ -374,7 +380,7 @@ class Bundler {
|
|||
const img = {
|
||||
__packager_asset: true,
|
||||
fileSystemLocation: path.dirname(module.path),
|
||||
httpServerLocation: path.join('/assets', path.dirname(relPath)),
|
||||
httpServerLocation: assetUrlPath,
|
||||
width: dimensions.width / module.resolution,
|
||||
height: dimensions.height / module.resolution,
|
||||
scales: assetData.scales,
|
||||
|
|
Loading…
Reference in New Issue