diff --git a/.changeset/angry-llamas-sip.md b/.changeset/angry-llamas-sip.md new file mode 100644 index 0000000000..76264ee365 --- /dev/null +++ b/.changeset/angry-llamas-sip.md @@ -0,0 +1,5 @@ +--- +"@rnx-kit/metro-config": patch +--- + +Fixed asset URLs not being restored when targeting Windows diff --git a/packages/metro-config/src/index.js b/packages/metro-config/src/index.js index c12e860465..64e525bd0a 100644 --- a/packages/metro-config/src/index.js +++ b/packages/metro-config/src/index.js @@ -320,7 +320,19 @@ function additionalConfig(projectRoot, inputConfig) { ]; } else { const { restoreAssetURL } = require("./assetPlugins/escapeAssetURLs.js"); - config.server = { rewriteRequestUrl: restoreAssetURL }; + config.server = { + // Some platforms (notably Windows) still prefer `enhanceMiddleware` over + // `rewriteRequestUrl`. We need to set both to ensure asset URLs are + // properly restored. + enhanceMiddleware: (middleware) => { + /** @type {import("connect").NextHandleFunction} */ + return (req, res, next) => { + req.url = restoreAssetURL(req.url ?? ""); + return middleware(req, res, next); + }; + }, + rewriteRequestUrl: restoreAssetURL, + }; transformer.assetPlugins = [ require.resolve("./assetPlugins/escapeAssetURLs.js"),