我该如何交换'在我的申请中对反应/插件做出反应?

时间:2015-05-26 11:47:32

标签: javascript node.js reactjs browserify

我想使用Perf的东西。似乎如果我这样做:

var React = require('react/addons');

在我自己的模块中,然后库(react-bootstrap,react-router等)最终使用另一个简单的反应副本并且事情中断了。我正在使用browserify。

是否有修复或其他方法可以执行此操作?

2 个答案:

答案 0 :(得分:0)

要求reactreact/addons会为您提供相同的对象。 react/addons需要react所做的相同模块(lib/React),react/addons甚至会改变该对象,以便任何需要react的人都可以获得插件。

如果您在捆绑包中最终使用了多个版本的React,那么因为您使用的库具有react作为依赖项而不是对等依赖项。您应该使用npm dedupe来避免这种情况。但react-router具有react作为对等依赖项,因此react-router将获得与您的模块(使用插件)相同的react模块实例。不知道你使用的其他依赖于React的软件包。

答案 1 :(得分:0)

事实证明问题出在我的gulpfile上。关于寻找浏览器垫片的评论的Tx引导我找到解决方案:

我的browserify任务(来自React JS workflow, part 2)在开发期间使用browserify.external(..)构建单独的vendors.js(libs)和main.js(我的应用程序)包,以从main.js中排除libs。我只需添加" react / addons"作为一个外部的lib和"反应"。

这里解释了这个问题:

https://github.com/substack/node-browserify/issues/1161