react-everywhere/re-start

Babel-Jest and Jest Versions Incompatible w/ React-Scripts Dependency-Requirements

Opened this issue · 2 comments

ZiaMM commented

Step 1: Are you in the right place?

I think so, as it occurs when following the read-me instructions and is the result of node-package versions which specified in the package.json file, but incompatible.

Step 2: Describe your environment

  • template name :re-start
  • template version : 0.0.1
  • react-native version: 0.59.5
  • OS : Linux
  • Platform causing error: web (didn't try others)

Step 3: Describe the problem (try to include screenshots):

First error - Could not find react-native-windows@0.59.. Latest version of react-native-windows is 0.57.1, try switching to react-native@0.57..
I did not attempt to troubleshoot/fix this, as I am only interested in web, iOS, Android. After commenting out "enableWindows();" in ./finishInstall.js this script ran OK.

Then ...
Errors on attempting to start - first citing incompatible versions of babel-jest / jest, then ELIFECYCLE error crash.

Steps to reproduce:

Following the read-me instructions

Expected Results:

Installs & Starts OK

How I fixed it: (maybe?)

In the package.json,

  • I changed the react-scripts to the latest minor version within the major-version (v2.1.8).
  • I removed from defDependencies "babel-jest" and "jest" ( so react-scripts compatible versions would be installed - v23.6.0 vs the v24.7.1 specified )

Then:

  • deleted the node_modules folder
  • ran yarn

Was able to run "npm run web" and get the default-page to load OK. I am unsure of any new problems this may have created, if functionality in v24 of babel-jest and jest are needed for functionality beyond the demo-page.

Note there is no src/screens/EntryScreen or src/components/TopLevelComponent.js in "re-start" - so the demo screen shows "re-route" instead. It might be a good idea to include those, if only just so they would overwrite the "re-route" ones, so a new-user knows they didn't miss installing the last template (re-start) over the others.

We currently don't have tests to check version updates break things, they would be nice. Also, we are thinking to move from using templates, to convert finish-install.js in an independent CLI to just add missing platforms to current projects, that would be more flexible. Main problem with that would be web platform, but if react-native-dom gets more mature, it would be easy.

First error related to this: microsoft/react-native-windows#2003

finishInstall.js fails due to expectation of App.windows.js after react-native windows fails. Would it be better to if (existsSync('App.windows.js')) here so the install doesn't bomb out (given react-native-windows stability) or wrap it in a try catch? Or is the expectation that you would want this to fail? I can PR if this is of any interest.