Description
Is this a bug report?
Yes, for react-scripts 2.0. (edit: originally I had believed this to be related to workspaces, but after more testing, it is not - this happens without a monorepo/workspaces. All details below updated to reflect that with a simpler test case.)
Did you try recovering your dependencies?
Yes. I deleted both the workspace and CRA app node_modules
and lock files, and reinstalled with yarn (v1.6.0); deleted everything again and tried with npm (v5.6.0) with the same result.
Which terms did you search for in User Guide?
I followed the steps outlined in the roadmap for react-scripts 2.0 to initialize the app.
Environment
MacOS High Sierra 10.134
node 10.1.0
yarn 1.6.0
create-react-app@next
react-scripts@2.0.0-next.66cc7a90
I executed this command to init a new CRA2 app:
npx create-react-app@next --scripts-version=2.0.0-next.66cc7a90 test
Steps to Reproduce
- Create a CRA2 app with the command above in the packages (or, in my example, "exercises" folder)
- In the App.js file, attempt to import
getPrototypeOf
from@babel/runtime/helpers/getPrototypeOf
- Run
yarn start
in either the CRA2 app or the workspace root
(Note: I discovered this issue originally when I installed semantic-ui-react
and attempted to use one of its components, which resulted in this error. To simplify the demo I just attempted to import getPrototypeOf
in App.js.)
Expected Behavior
CRA app compiles and runs
Actual Behavior
A compilation error occurs:
Module not found: Can't resolve '@babel/runtime/helpers/getPrototypeOf' in '/Users/nloding/code/oss/cra2-workspace-broken-ref/src'
I also see this warning when installing the dependencies, I am unsure if it is related?
npm WARN @babel/plugin-syntax-dynamic-import@7.0.0-beta.34 requires a peer of @babel/core@7.0.0-beta.34 but none is installed. You must install peer dependencies yourself.
Reproducible Demo
https://github.com/nloding/cra2-workspace-broken-ref
The broken line: https://github.com/nloding/cra2-workspace-broken-ref/blob/master/src/App.js#L6
Activity
[-]Cannot resolve babel module when using yarn workspaces and react-scripts@next[/-][+]Cannot resolve babel module when using react-scripts@next[/+]nloding commentedon May 25, 2018
It looks like
react-scripts@2.0.0-next.66cc7a90
references@babel/runtime@7.0.0-beta.44
which is, in fact, missinggetPrototypeOf
. However, even if you manually install@babel/runtime@7.0.0-beta.47
, which does have the missing export, the compilation still fails. I've updated my repo to reference beta.47.bugzpodder commentedon May 27, 2018
When the new alpha of CRA releases with babel 7b46+ you should be fine. Internally react-scripts webpack resolves babel runtime relative to itself.
https://github.com/facebook/create-react-app/blob/next/packages/react-scripts/config/webpack.config.dev.js#L152
nloding commentedon May 28, 2018
Got it, thanks - I'll keep an eye out for the next alpha announcement and test it out.
Ethorsen commentedon Aug 22, 2018
This is starting to be a real problem as more and more packages rely on getPrototypeOf. We need to hold back a lot of upgrades because of the outdated version of babel in react-scripts@next
bugzpodder commentedon Aug 27, 2018
I've personally had a similar issue as well. The good news is babel 7 is almost out (rc4) and I am sure there will be a new version of 2.0.0@next with it once it has been released.
venikx commentedon Aug 28, 2018
@Ethorsen Same here.
I need Jest 22, but I can't update CRA to @next, because some deps rely on getPrototypeOf and breaks my app.
@bugzpodder How do you suggest installing and updating the next version of CRA?
npm i
?nloding commentedon Aug 28, 2018
@Ethorsen @bugzpodder @AnaRobynn the latest cut of react-scripts (
react-scripts@2.0.0-next.a671462c
) uses7.0.0-beta.46
which hasgetPrototypeOf
. You can use that version of react-scripts in the mean time, it works. There are upgrade directions in the roadmap issue #3815venikx commentedon Aug 28, 2018
I will try that one out when I get the chance, thank you! I might have fucked up some step, due to beinf the end of the day and lack of sleep.
Tomorrow is another day!
venikx commentedon Aug 29, 2018
@nloding
I don't get the error message about getPrototypeOf anymore, which might be a step forward. But I'm getting building errors, the same as in the roadmap. So it might I'm still getting the same error, but it's just not showing it.
An interesting note maybe is that it happens when creating the production build. I'm going to just try running it locally.
Not sure if it's going to be useful:
nloding commentedon Aug 29, 2018
I haven't run into that error yet, but I also haven't done a full production build in a while. Doing a rather large feature still ... hopefully it's fixed by the time I'm doing a production build! :)
venikx commentedon Aug 29, 2018
Currently I'm running an ejected version on my local machine with an updated Jest version and when I push to the repo I make sure the tests don't run, because they will fail with version the repo has. It's a bit of a mess, but at least I can keep writing my tests now.