apollo-client icon indicating copy to clipboard operation
apollo-client copied to clipboard

getDataFromTree Crash with useEffect

Open erwan-joly opened this issue 3 years ago • 1 comments

Intended outcome: I'm trying to add SSR graphql to my app. My understanding is that I should use getDataFromTree. Unfortunately it doesn't seems to work. I may have failed to understand how to do so but I'm currently getting a crash. Any idea if that's a bug or if not what am I doing the wrong way ?

Actual outcome: After a request to the default page / I'm getting a crash.

[1] ANY / (λ: test)
[1] Warning: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
[1] 1. You might have mismatching versions of React and the renderer (such as React DOM)
[1] 2. You might be breaking the Rules of Hooks
[1] 3. You might have more than one copy of React in the same app
[1] See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.
[1] Error:
[1] TypeError: Cannot read properties of null (reading 'useContext')
[1]     at useContext (C:\dev\SSRRepro\.webpack\service\handler.js:43286:21)
[1]     at useInRouterContext (C:\dev\SSRRepro\.webpack\service\handler.js:39843:59)
[1]     at Router (C:\dev\SSRRepro\.webpack\service\handler.js:40194:5)
[1]     at renderWithHooks (C:\dev\SSRRepro\node_modules\react-dom\cjs\react-dom-server-legacy.node.development.js:5662:16)
[1]     at renderIndeterminateComponent (C:\dev\SSRRepro\node_modules\react-dom\cjs\react-dom-server-legacy.node.development.js:5735:15)
[1]     at renderElement (C:\dev\SSRRepro\node_modules\react-dom\cjs\react-dom-server-legacy.node.development.js:5950:7)
[1]     at renderNodeDestructiveImpl (C:\dev\SSRRepro\node_modules\react-dom\cjs\react-dom-server-legacy.node.development.js:6108:11)
[1]     at renderNodeDestructive (C:\dev\SSRRepro\node_modules\react-dom\cjs\react-dom-server-legacy.node.development.js:6080:14)
[1]     at renderIndeterminateComponent (C:\dev\SSRRepro\node_modules\react-dom\cjs\react-dom-server-legacy.node.development.js:5789:7)
[1]     at renderElement (C:\dev\SSRRepro\node_modules\react-dom\cjs\react-dom-server-legacy.node.development.js:5950:7)
[1] × Uncaught exception
[1] Environment: win32, node 16.14.0, framework 3.21.0 (local), plugin 6.2.2, SDK 4.3.2
[1] Docs:        docs.serverless.com
[1] Support:     forum.serverless.com
[1] Bugs:        github.com/serverless/serverless/issues
[1]
[1]
[1] 3 deprecations found: run 'serverless doctor' for more details
[1] npm run start:offline exited with code 1

How to reproduce the issue: Here a repo https://github.com/erwan-joly/SSRRepro Just run npm i and npm start Go to http://localhost:3000/ and see the crash. It doesn't happen without this line https://github.com/erwan-joly/SSRRepro/blob/master/src/server/render.tsx#L59

Versions System: OS: Windows 10 10.0.22000 Binaries: Node: 16.14.0 - C:\Program Files\nodejs\node.EXE npm: 8.3.1 - C:\Program Files\nodejs\npm.CMD Browsers: Edge: Spartan (44.22000.120.0), Chromium (103.0.1264.49) npmPackages: @apollo/client: 3.6.9 => 3.6.9 apollo-upload-client: 17.0.0 => 17.0.0

erwan-joly avatar Aug 13 '22 09:08 erwan-joly

seems to be related to https://github.com/apollographql/apollo-client/issues/9417

fixed by adding webpack-node-externals with this configuration


    externalsPresets: { node: true },
    externals: [nodeExternals({
        allowlist: [/\.(?!(?:jsx?|json)$).{1,5}$/i],
    })],

erwan-joly avatar Aug 21 '22 08:08 erwan-joly

@erwan-joly glad you got it working! I'm going to go ahead and close this issue. Feel free to open it back up if you see anything else. Thanks!

jerelmiller avatar Nov 02 '22 22:11 jerelmiller