-
Notifications
You must be signed in to change notification settings - Fork 47.3k
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
Fix react-dom ReferenceError requestAnimationFrame in non-browser env (#13000) #13001
Fix react-dom ReferenceError requestAnimationFrame in non-browser env (#13000) #13001
Conversation
…facebook#13000) The facebook#12931 ( facebook@79a740c ) broke the server-side rendering: in the `fixtures/ssr` the following error appeared from the server-side when `localhost:3000` is requested: ``` ReferenceError: requestAnimationFrame is not defined at /__CENSORED__/react/build/node_modules/react-dom/cjs/react-dom.development.js:5232:34 at Object.<anonymous> (/__CENSORED__/react/build/node_modules/react-dom/cjs/react-dom.development.js:17632:5) at Module._compile (module.js:624:30) at Module._extensions..js (module.js:635:10) at Object.require.extensions.(anonymous function) [as .js] (/__CENSORED__/react/fixtures/ssr/node_modules/babel-register/lib/node.js:152:7) at Module.load (module.js:545:32) at tryModuleLoad (module.js:508:12) at Function.Module._load (module.js:500:3) at Module.require (module.js:568:17) at require (internal/module.js:11:18) ``` The exception pointed to this line: ```js // We capture a local reference to any global, in case it gets polyfilled after // this module is initially evaluated. // We want to be using a consistent implementation. const localRequestAnimationFrame = requestAnimationFrame; ``` **Test plan** 1. In `react` repo root, `yarn && yarn build`. 2. In `fixtures/ssr`, `yarn && yarn start`, 3. In browser, go to `http://localhost:3000`. 4. Observe the fixture page, not the exception message.
Please run I think it would make sense to remove the warning call from Then at the callsite you probably want to fire that warning if it doesn't exist, and substitute it by a shim in that case (e.g. that throws on call). |
…facebook#13000) According to the comment by @gaearon: facebook#13001 (comment)
ReactDOM: size: 🔺+0.1%, gzip: 🔺+0.1% Details of bundled changes.Comparing: d3e0a3a...aa90798 react-dom
react-art
react-scheduler
Generated by 🚫 dangerJS |
typeof requestAnimationFrameForReact === 'function' | ||
? requestAnimationFrameForReact | ||
: function(callback: Function) { | ||
throw new Error( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please use invariant(false, message)
here so the error message gets stripped out in prod.
? requestAnimationFrameForReact | ||
: function(callback: Function) { | ||
throw new Error( | ||
'React depends on requestAnimationFrame, but this shim was called.', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's change the message to the same one as in the warning above.
…acebook#13000) According to the comment by @gaearon: facebook#13001 (comment)
Thx |
Thanks for fixing this! :) |
The #12931 ( 79a740c ) broke the server-side rendering: in the
fixtures/ssr
the following error appeared from the server-side whenlocalhost:3000
is requested:The exception pointed to this line:
Test plan
react
repo root,yarn && yarn build
.fixtures/ssr
,yarn && yarn start
,http://localhost:3000
.