Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bundling fails for new apps built against main with missing-asset-registry-path error #11437

Closed
jonthysell opened this issue Mar 30, 2023 · 4 comments · Fixed by #11438
Closed
Assignees
Labels
Blocking High severity blocker issue bug
Milestone

Comments

@jonthysell
Copy link
Contributor

Problem Description

When bundling a (release) bundle, the command fails with the following error:

Error: Unable to resolve module missing-asset-registry-path from C:\code\testcli\node_modules\react-native-windows\Libraries\NewAppScreen\components\logo.png: missing-asset-registry-path could not be found within the project or in these directories:
  node_modules\react-native-windows\node_modules
  node_modules

This is reproable by either building the bundle manually with react-native bundle or by letting react-native run-windows --release build the bundle.

This is currently blocking all of our PRs from passing the checks where we create and test new CLI apps.

Steps To Reproduce

  1. New RN app:
    npx --yes react-native@0.0.0-20230308-2111-d41e95fb1 init testcli --template react-native@0.0.0-20230308-2111-d41e95fb1
  2. Add RNW canary:
    npx --yes react-native-windows-init@latest --verbose --version 0.0.0-canary.634 --overwrite --language cpp --projectType app
  3. Try to bundle:
    yarn react-native bundle --platform windows --entry-file "index.js" --bundle-output "C:\code\testcli\windows\testcli\Bundle\index.windows.bundle" --assets-dest "C:\code\testcli\windows\testcli\Bundle" --dev false --reset-cache --sourcemap-output "C:\code\testcli\windows\x64\Release\testcli\sourcemaps\react\index.windows.bundle.map"

Expected Results

Bundle building succeeds

CLI version

11.0.0-alpha.2

Environment

System:
    OS: Windows 10 10.0.25324
    CPU: (8) x64 Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz
    Memory: 1.02 GB / 15.84 GB
  Binaries:
    Node: 16.18.1 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.19 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
    npm: 8.19.2 - C:\Program Files\nodejs\npm.CMD
    Watchman: Not Found
  SDKs:
    Android SDK: Not Found
    Windows SDK:
      AllowDevelopmentWithoutDevLicense: Enabled
      AllowAllTrustedApps: Enabled
      Versions: 10.0.16299.0, 10.0.18362.0, 10.0.19041.0, 10.0.22000.0, 10.0.22621.0
  IDEs:
    Android Studio: Not Found
    Visual Studio: 16.11.33423.256 (Visual Studio Enterprise 2019), 17.5.33516.290 (Visual Studio Enterprise 2022)
  Languages:
    Java: Not Found
    Ruby: Not Found
  npmPackages:
    @react-native-community/cli: Not Found
    react: 18.2.0 => 18.2.0
    react-native: 0.0.0-20230308-2111-d41e95fb1 => 0.0.0-20230308-2111-d41e95fb1
    react-native-windows: * => 0.0.0-canary.634
  npmGlobalPackages:
    *react-native*: Not Found

Target Platform Version

10.0.19041

Target Device(s)

Desktop

Visual Studio Version

Visual Studio 2022

Build Configuration

ReleaseBundle

Snack, code example, screenshot, or link to a repository

No response

@jonthysell jonthysell added the bug label Mar 30, 2023
@microsoft-github-policy-service microsoft-github-policy-service bot added the Needs: Triage 🔍 New issue that needs to be reviewed by the issue management team (label applied by bot) label Mar 30, 2023
@jonthysell
Copy link
Contributor Author

This may be an upstream regression as within our repo bundling works fine, but even formerly passing PR builds now fail even without any dependency changes on our end.

@jonthysell
Copy link
Contributor Author

Current suspect is the new version of Metro 0.76 which calls out breaking changes in asset resolution: https://github.com/facebook/metro/releases/tag/v0.76.0

@chrisglein chrisglein added this to the 0.72 milestone Mar 30, 2023
@chrisglein chrisglein removed the Needs: Triage 🔍 New issue that needs to be reviewed by the issue management team (label applied by bot) label Mar 30, 2023
jonthysell added a commit to jonthysell/react-native-windows that referenced this issue Mar 30, 2023
New app projects built against main are unable to create their bundle (see microsoft#11437).

As such, all PRs are blocked as the New CLI app checks all fail.

The problem is that the metro config needs `transformer.assetRegistryPath` to be set to the location of `./Libraries/Image/AssetRegistry`, which for our purposes is the copy located in the RNW folder. For some reason this isn't set anymore.

This PR adds a workaround of specifying that path in our app template's metro.config.js file. This unblocks our PRs but we should probably find a better place than in an app template file.

Resolves microsoft#11437
@jonthysell jonthysell added the Blocking High severity blocker issue label Mar 30, 2023
@jonthysell
Copy link
Contributor Author

It looks like this might be the upstream breaking change: react-native-community/cli#1875

jonthysell added a commit that referenced this issue Mar 30, 2023
…#11438)

## Description

New app projects built against main are unable to create their bundle (see #11437).

As such, all PRs are blocked as the New CLI app checks all fail.

The problem is that the metro config needs `transformer.assetRegistryPath` to be set to the location of `'react-native/Libraries/Image/AssetRegistry'`, as for some reason this isn't set anymore upstream.

This PR adds a workaround of specifying that path in our app template's metro.config.js file. This unblocks our PRs but we should probably find a better place than in an app template file.

### Type of Change

- Bug fix (non-breaking change which fixes an issue)
- Breaking change (fix or feature that would cause existing functionality to not work as expected)

### Why

Unblock our PRs.

Resolves #11437

### What

Updates the new app template's metro.config.js file with the correct path which is no longer getting set for us.

## Screenshots
N/A

## Testing

Tested with a new CLI app.
 ###### Microsoft Reviewers: [Open in CodeFlow](https://portal.fabricbot.ms/api/codeflow?pullrequest=https://github.com/microsoft/react-native-windows/pull/11438)
 ###### Microsoft Reviewers: [Open in CodeFlow](https://portal.fabricbot.ms/api/codeflow?pullrequest=https://github.com/microsoft/react-native-windows/pull/11438)
@huntie
Copy link

huntie commented Mar 31, 2023

Hi @jonthysell! Yes this was caused by the above change, which comes in with @react-native-community/cli-plugin-metro@11.0.0 (and previous 11.x alphas when installed without a lockfile). Also broke the React Native RC branch (and main) for a bit as we don't use a lockfile in our project template.

Some references in case they help you:

With the new CLI version included, the design is per facebook/react-native#36502 — requires a complete metro.config.js that extends @react-native/metro-config to be read.

Please DM me on Twitter or RN Discord if I can help out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Blocking High severity blocker issue bug
Projects
None yet
3 participants