getDataFromTree Crash with useEffect
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
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 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!