Skip to content

Haste module overrides for react-native-windows resolution failures #19953

@rozele

Description

@rozele
Contributor

Environment

Run react-native info in your terminal and paste its contents here.

  React Native Environment Info:
    System:
      OS: macOS High Sierra 10.13.3
      CPU: x64 Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz
      Memory: 90.15 MB / 16.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 8.9.4 - /usr/local/bin/node
      Yarn: 1.7.0 - /usr/local/bin/yarn
      npm: 6.1.0 - /usr/local/bin/npm
    SDKs:
      iOS SDK:
        Platforms: iOS 11.4, macOS 10.13, tvOS 11.4, watchOS 4.3
      Android SDK:
        Build Tools: 23.0.1, 25.0.3, 26.0.2, 27.0.3
        API Levels: 23, 25, 27
    IDEs:
      Android Studio: 3.0 AI-171.4443003
      Xcode: 9.4.1/9F2000 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.3.2 => 16.3.2 
      react-native: 0.56.0-rc.1 => 0.56.0-rc.1 
    npmGlobalPackages:
      react-native-cli: 2.0.1

Description

Describe your issue in detail. Include screenshots if needed. If this is a regression, let us know.

react-native-windows overrides haste modules in react-native, currently using the @providesModule attribute. For example, the ScrollView module in react-native has behavior that limits it to iOS and Android, we we override the module in react-native-windows here.

Prior to react-native 0.56.0 RC (which moved to metro 0.38), this behavior worked as expected. Now, the haste module overrides for windows no longer seem to get resolved. Specifically, I get the following error:

Unable to resolve module `AccessibilityInfo` from `/Users/rozele/code/sandbox/v56/node_modules/react-native/Libraries/react-native/react-native-implementation.js`: Module `AccessibilityInfo` does not exist in the Haste module map

This might be related to https://github.com/facebook/react-native/issues/4968
To resolve try the following:
  1. Clear watchman watches: `watchman watch-del-all`.
  2. Delete the `node_modules` folder: `rm -rf node_modules && npm install`.
  3. Reset Metro Bundler cache: `rm -rf /tmp/metro-bundler-cache-*` or `npm start -- --reset-cache`.  4. Remove haste cache: `rm -rf /tmp/haste-map-react-native-packager-*`.

Please note - the AccessibiltyInfo module just happens to be the first module in the dependency graph that we provide a *.windows.js override for, so it has nothing to do with that module specifically.

Reproducible Demo

Let us know how to reproduce the issue. Include a code sample, share a project, or share an app that reproduces the issue using https://snack.expo.io/. Please follow the guidelines for providing a MCVE: https://stackoverflow.com/help/mcve

A very simple test that repos (on both Windows and Mac):

  1. Generate a new react-native project with 0.56.0-rc.4:
react-native init test --version 0.56.0-rc.4
  1. Generate a react-native-windows project:
yarn add rnpm-plugin-windows
react-native windows --windowsVersion 0.55.0-rc.0
  1. Try to generate a windows platform bundle
react-native bundle --platform windows --entry-file index.js --bundle-output test.bundle

Activity

rubennorte

rubennorte commented on Jun 29, 2018

@rubennorte
Contributor

Thanks for reporting this. This is indeed a breaking change for plugins. In order to prevent having to override the hasteImplModulePath configuration in end-user code, we're going to add an exception for react-native-windows in react-native. I'm working in a fix right now.

Meanwhile, we're going to work in a long-term solution for overriding core components from plugins, as the current approach is pretty hacky.

rozele

rozele commented on Jun 30, 2018

@rozele
ContributorAuthor

@rubennorte - definitely agree that a less hacky long term solution is ideal. I've never liked the "special case" of react-native-windows in the metro / react-native repos.

That being said, my parameters for an ideal solution would be one that allows me to install react-native-windows and have it "just work" without changes to the rn-cli.config.js. We have a precedent for plugging into the react-native link command via a bit of config in the package.json file here. If we could have something declarative like that for metro / haste modules, that would be ideal.

kelset

kelset commented on Jul 10, 2018

@kelset
Contributor

Hey @rozele is this still an issue or 0.56.0 fixed it?


According to issue #20015 this is still an issue.

PerspectivesLab

PerspectivesLab commented on Jul 13, 2018

@PerspectivesLab

this => Unable to resolve module AccessibilityInfo is still an issue for 0.56.0, compiling for android on windows platform .... what is going wrong ? this is a major issue....
i cant believe this is happening for 0.56 after 6 release candidates....

guilhermegonzaga

guilhermegonzaga commented on Jul 13, 2018

@guilhermegonzaga

I got the same issue on Windows 10 :(

guidotajan

guidotajan commented on Jul 13, 2018

@guidotajan

Same issue here! Trying to compile RN 0.56.0 for Android.
Here it's the react-native info output:

React Native Environment Info:
    System:
      OS: Windows 10
      CPU: x64 Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
      Memory: 1.49 GB / 3.88 GB
    Binaries:
      Yarn: 1.5.1 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
      npm: 5.6.0 - C:\Program Files\nodejs\npm.CMD
    IDEs:
      Android Studio: Version  3.1.0.0 AI-173.4819257
added
Impact: RegressionDescribes a behavior that used to work on a prior release, but stopped working recently.
Tech: Bundler 📦This issue is related to the bundler (Metro, Haul, etc) used.
on Jul 13, 2018

26 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Impact: RegressionDescribes a behavior that used to work on a prior release, but stopped working recently.Platform: WindowsBuilding on Windows.Resolution: LockedThis issue was locked by the bot.Tech: Bundler 📦This issue is related to the bundler (Metro, Haul, etc) used.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @rubennorte@Dimous@rozele@guidotajan@donjo9

        Issue actions

          Haste module overrides for react-native-windows resolution failures · Issue #19953 · facebook/react-native