Я разрабатываю внешний компонент (скажем, my-component
, который я связываю с проектом с npm link
(как он находится в процессе, и мне нужен пакет для отражения изменений).
В папке my-component
есть node_modules/react
и node_modules/react-dom
, поскольку они являются его зависимостями. Однако они являются peerDependences, поэтому я не предполагал привести их в проект, связывающий этот пакет.
Однако при использовании npm link
он связывает весь каталог, включая node_modules
. Итак, когда проект строится, он включает пакеты 2 раза: от node_modules/*
и от node_modules/my-component/node_modules/*
.
Это начинает влиять, когда компонент использует ReactDOM.findDOMNode
, он вызывает эту ошибку:
Warning: React can't find the root component node for data-reactid value `.0.2.0`. If you're seeing this message, it probably means that you've loaded two copies of React on the page. At this time, only a single copy of React can be loaded at a time.
Кроме того, это может помочь понять, что происходит: проблема возникает только в том случае, если есть как node_modules/my-component/node_modules/react
, так и node_modules/my-component/node_modules/react-dom
. Если есть только один из них, сообщение об ошибке отсутствует.
Обычная установка пакета не приводит к такой ошибке, поскольку там нет node_modules/react-dom
.
Как предполагается создание внешнего компонента и проекта в одно и то же время?