Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Error related to RefFindNode and React 17 #4124

Closed
silviubogan opened this issue Dec 9, 2020 · 6 comments
Closed

Error related to RefFindNode and React 17 #4124

silviubogan opened this issue Dec 9, 2020 · 6 comments

Comments

@silviubogan
Copy link

silviubogan commented Dec 9, 2020

Bug Report

Steps

  1. Clone my fork of the project on which I work: https://github.com/silviubogan/volto-slate/tree/eefee2c46c38bc7bd07e6a9681e27bebc6fc5983 into a new directory and cd into it.

  2. Run this (fish syntax for putting output of pwd in the command):

docker run -it --rm -v (pwd):/opt/frontend/my-volto-project/src/addons/volto-slate \
                                                                           -e GIT_NAME=volto-slate \
                                                                           -e GIT_BRANCH=develop \
                                                                           -e NAMESPACE=@eeacms \
                                                                           -e DEPENDENCIES="@eeacms/volto-slate" \
                                                                           eeacms/volto-test test

Expected Result

The unit tests are passed.

Actual Result

There are some strange errors related to RefFindNode and I think they are related to React 17. I put here just the first jest test file that fails as the others present similar errors:

FAIL src/addons/volto-slate/src/editor/ui/ToolbarButton.test.js (14.107 s)
  ● Console

    console.error
      Error: Uncaught [Error: Unable to find node on an unmounted component.]
          at reportException (/opt/frontend/my-volto-project/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:66:24)
          at invokeEventListeners (/opt/frontend/my-volto-project/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:209:9)
          at HTMLUnknownElementImpl._dispatch (/opt/frontend/my-volto-project/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
          at HTMLUnknownElementImpl.dispatchEvent (/opt/frontend/my-volto-project/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
          at HTMLUnknownElementImpl.dispatchEvent (/opt/frontend/my-volto-project/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
          at HTMLUnknownElement.dispatchEvent (/opt/frontend/my-volto-project/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
          at Object.invokeGuardedCallbackDev (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:237:16)
          at invokeGuardedCallback (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:292:31)
          at commitRootImpl (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:22541:9)
          at unstable_runWithPriority (/opt/frontend/my-volto-project/node_modules/scheduler/cjs/scheduler.development.js:653:12) Error: Unable to find node on an unmounted component.
          at findHostInstanceWithWarning (/opt/frontend/my-volto-project/src/addons/volto-slate/node_modules/react-dom/cjs/react-dom.development.js:25377:19)
          at Object.findDOMNode (/opt/frontend/my-volto-project/src/addons/volto-slate/node_modules/react-dom/cjs/react-dom.development.js:26067:12)
          at RefFindNode.componentDidMount (/opt/frontend/my-volto-project/src/addons/volto-slate/node_modules/@fluentui/react-component-ref/dist/commonjs/RefFindNode.tsx:40:32)
          at commitLifeCycles (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:19814:22)
          at commitLayoutEffects (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:22803:7)
          at HTMLUnknownElement.callCallback (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:188:14)
          at invokeEventListeners (/opt/frontend/my-volto-project/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:193:27)
          at HTMLUnknownElementImpl._dispatch (/opt/frontend/my-volto-project/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:119:9)
          at HTMLUnknownElementImpl.dispatchEvent (/opt/frontend/my-volto-project/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:82:17)
          at HTMLUnknownElementImpl.dispatchEvent (/opt/frontend/my-volto-project/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js:30:27)
          at HTMLUnknownElement.dispatchEvent (/opt/frontend/my-volto-project/node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:157:21)
          at Object.invokeGuardedCallbackDev (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:237:16)
          at invokeGuardedCallback (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:292:31)
          at commitRootImpl (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:22541:9)
          at unstable_runWithPriority (/opt/frontend/my-volto-project/node_modules/scheduler/cjs/scheduler.development.js:653:12)
          at runWithPriority$1 (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:11039:10)
          at commitRoot (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:22381:3)
          at finishSyncRender (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:21807:3)
          at performSyncWorkOnRoot (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:21793:7)
          at scheduleUpdateOnFiber (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:21188:7)
          at updateContainer (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:24373:3)
          at /opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:24758:7
          at unbatchedUpdates (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:21903:12)
          at legacyRenderSubtreeIntoContainer (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:24757:5)
          at Object.render (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:24840:10)
          at /opt/frontend/my-volto-project/node_modules/@testing-library/react/dist/pure.js:99:25
          at batchedUpdates$1 (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom.development.js:21856:12)
          at act (/opt/frontend/my-volto-project/node_modules/react-dom/cjs/react-dom-test-utils.development.js:929:14)
          at render (/opt/frontend/my-volto-project/node_modules/@testing-library/react/dist/pure.js:95:26)
          at Object.<anonymous> (/opt/frontend/my-volto-project/src/addons/volto-slate/src/editor/ui/ToolbarButton.test.js:18:28)
          at Object.asyncJestTest (/opt/frontend/my-volto-project/node_modules/@jest/core/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:106:37)
          at /opt/frontend/my-volto-project/node_modules/@jest/core/node_modules/jest-jasmine2/build/queueRunner.js:45:12
          at new Promise (<anonymous>)
          at mapper (/opt/frontend/my-volto-project/node_modules/@jest/core/node_modules/jest-jasmine2/build/queueRunner.js:28:19)
          at /opt/frontend/my-volto-project/node_modules/@jest/core/node_modules/jest-jasmine2/build/queueRunner.js:75:41
          at processTicksAndRejections (internal/process/task_queues.js:97:5)

      at VirtualConsole.<anonymous> (node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/virtual-console.js:29:45)

    console.error
      The above error occurred in the <RefFindNode> component:
          in RefFindNode (created by Ref)
          in Ref (created by Button)
          in Button (at ToolbarButton.jsx:10)
          in div (at ToolbarButton.jsx:9)
          in ForwardRef (at ToolbarButton.test.js:20)
          in IntlProvider (created by ConnectFunction)
          in ConnectFunction (created by Provider)
          in Provider (created by Provider)
          in Provider (at ToolbarButton.test.js:19)
      
      Consider adding an error boundary to your tree to customize error handling behavior.
      Visit https://fb.me/react-error-boundaries to learn more about error boundaries.

      at logCapturedError (node_modules/react-dom/cjs/react-dom.development.js:19527:21)
      at logError (node_modules/react-dom/cjs/react-dom.development.js:19564:5)
      at update.callback (node_modules/react-dom/cjs/react-dom.development.js:20708:5)
      at callCallback (node_modules/react-dom/cjs/react-dom.development.js:12490:12)
      at commitUpdateQueue (node_modules/react-dom/cjs/react-dom.development.js:12511:9)
      at commitLifeCycles (node_modules/react-dom/cjs/react-dom.development.js:19883:11)
      at commitLayoutEffects (node_modules/react-dom/cjs/react-dom.development.js:22803:7)
      at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:188:14)

  ● ToolbarButton › renders a toolbar button

    Unable to find node on an unmounted component.

      16 |       },
      17 |     });
    > 18 |     const { asFragment } = render(
         |                            ^
      19 |       <Provider store={store}>
      20 |         <ToolbarButton />
      21 |       </Provider>,

      at findHostInstanceWithWarning (src/addons/volto-slate/node_modules/react-dom/cjs/react-dom.development.js:25377:19)
      at Object.findDOMNode (src/addons/volto-slate/node_modules/react-dom/cjs/react-dom.development.js:26067:12)
      at RefFindNode.componentDidMount (src/addons/volto-slate/node_modules/@fluentui/react-component-ref/dist/commonjs/RefFindNode.tsx:40:32)
      at commitLifeCycles (node_modules/react-dom/cjs/react-dom.development.js:19814:22)
      at commitLayoutEffects (node_modules/react-dom/cjs/react-dom.development.js:22803:7)
      at HTMLUnknownElement.callCallback (node_modules/react-dom/cjs/react-dom.development.js:188:14)
      at Object.invokeGuardedCallbackDev (node_modules/react-dom/cjs/react-dom.development.js:237:16)
      at invokeGuardedCallback (node_modules/react-dom/cjs/react-dom.development.js:292:31)
      at commitRootImpl (node_modules/react-dom/cjs/react-dom.development.js:22541:9)
      at unstable_runWithPriority (node_modules/scheduler/cjs/scheduler.development.js:653:12)
      at runWithPriority$1 (node_modules/react-dom/cjs/react-dom.development.js:11039:10)
      at commitRoot (node_modules/react-dom/cjs/react-dom.development.js:22381:3)
      at finishSyncRender (node_modules/react-dom/cjs/react-dom.development.js:21807:3)
      at performSyncWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:21793:7)
      at scheduleUpdateOnFiber (node_modules/react-dom/cjs/react-dom.development.js:21188:7)
      at updateContainer (node_modules/react-dom/cjs/react-dom.development.js:24373:3)
      at node_modules/react-dom/cjs/react-dom.development.js:24758:7
      at unbatchedUpdates (node_modules/react-dom/cjs/react-dom.development.js:21903:12)
      at legacyRenderSubtreeIntoContainer (node_modules/react-dom/cjs/react-dom.development.js:24757:5)
      at Object.render (node_modules/react-dom/cjs/react-dom.development.js:24840:10)
      at node_modules/@testing-library/react/dist/pure.js:99:25
      at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:21856:12)
      at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:929:14)
      at render (node_modules/@testing-library/react/dist/pure.js:95:26)
      at Object.<anonymous> (src/addons/volto-slate/src/editor/ui/ToolbarButton.test.js:18:28)

Version

2.0.1

Testcase

I think the steps to reproduce are easier to follow than a possible testcase.

@welcome
Copy link

welcome bot commented Dec 9, 2020

👋 Thanks for opening your first issue here! If you're reporting a 🐞 bug, please make sure you've completed all the fields in the issue template so we can best help.

We get a lot of issues on this repo, so please be patient and we will get back to you as soon as we can.

@layershifter
Copy link
Member

@silviubogan can you please provide an isolated example?

@layershifter
Copy link
Member

Closing this for housekeeping until we will have an isolated repro 😿

P.S. For sure we are open to accept fixes if you will be able to debug the issue.
P.P.S. Isolated repro is important as for example I even don't have Docker on my machine.

@layershifter
Copy link
Member

If react-test-renderer is used directly, you can try to use mocks:
facebook/react#7371 (comment)

However, it's really strange that issue came from React's upgrade.

@danydhondt
Copy link

A simple Button gives the same error in React 17 and up. Downgrading to react 16.x.x removes the error. There's a lot of npm packages which suffer the same issue!

@brianespinosa
Copy link
Member

@danydhondt feel free to make a repro case then

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants