браузерная загрузка ReactJS дважды с помощью реактивного маршрутизатора

Я использую browserify для объединения ReactJS и (среди прочего) react-router. Но когда я смотрю в консоль, сообщение...

Download the React DevTools for a better development experience: http://fb.me/react-devtools

... появляется дважды (!) и сообщает мне, что на самом деле запущены два экземпляра ReactJS.

Если я загляну в свой браузерный JS, я увижу исходный код ReactJS только один раз.

Как бы мне этого избежать?

package.json:

"dependencies": {
    "LiveScript": "^1.3.0",
    "jquery": "*",
    "firebase": "*",
    "react": "0.11.2",
    "reactfire": "*",
    "react-router": "*",
    ...
}

Когда я запускаю npm ls | grep -i react, я получаю:

___ [email protected]
___ [email protected]
___ [email protected]
_ ___ [email protected]

person AlexGrafe    schedule 26.10.2014    source источник
comment
Возможно ли, что у вас где-то в HTML есть старая ссылка на источник React, размещенный на CDN?   -  person Michelle Tilley    schedule 26.10.2014
comment
React на CDN? Я использую npm для его получения. Это не должно быть проблемой, верно?   -  person AlexGrafe    schedule 05.11.2014
comment
Вы npm связываетесь с какими-либо библиотеками?   -  person Will Jenkins    schedule 11.06.2019


Ответы (2)


Выполнить npm dedupe. Скорее всего, это просто две разные версии патча для реакции.

Вы никогда не должны использовать подстановочные знаки для зависимостей. Для reactfire <0.1 и react-router ^0.9.

person Brigand    schedule 26.10.2014
comment
ОБНОВИЛ мой вопрос с npm ls Сейчас попробую дедупликацию. - person AlexGrafe; 26.10.2014
comment
Не работает! Я попытался посмотреть на это с помощью npm ls, где реакция фактически появлялась дважды, а затем npm deduped, которая удалила дубликат реагировать. Но после сборки с помощью browserify он по-прежнему дважды показывает Download the DevTools ... в консоли. - person AlexGrafe; 26.10.2014
comment
Тем не менее, хороший совет с npm dedupe. Возможно, я также добавлю npm shrinkwrap. - person AlexGrafe; 26.10.2014

Проверьте, импортируете ли вы реакцию с другим именем. Например

var React = require('react');

а также

var React = require('React');

приведет к тому, что реакция будет импортирована дважды.

person ashwnacharya    schedule 13.07.2015