Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 需要驻留在主机应用程序中的对等依赖项和Web包_Reactjs_Webpack - Fatal编程技术网

Reactjs 需要驻留在主机应用程序中的对等依赖项和Web包

Reactjs 需要驻留在主机应用程序中的对等依赖项和Web包,reactjs,webpack,Reactjs,Webpack,假设如下: var react = require('react'); HelloWorldApp是一个使用Webpack构建的项目,需要React。 MyReactComponent是HelloWorldApp使用的一个单独的项目,需要一个引用来进行响应才能正常工作 在MyReactComponent中,我将执行以下操作: var react = require('react'); 在MyReactComponent的package.json中,我将React指定为对等依赖项 现在,为了将

假设如下:

var react = require('react');
HelloWorldApp是一个使用Webpack构建的项目,需要React。 MyReactComponent是HelloWorldApp使用的一个单独的项目,需要一个引用来进行响应才能正常工作

在MyReactComponent中,我将执行以下操作:

var react = require('react');
在MyReactComponent的package.json中,我将React指定为对等依赖项

现在,为了将CSS文件的内容捆绑到MyReactComponent中,我尝试用Webpack构建MyReactComponent

我如何在MyReactComponent项目中配置Webpack,以便当MyReactComponent调用React(
require('React')
)时,它将获得HelloWorldApp中所需的React实例的引用

我不确定这是一个受支持的工作流,还是我的想法是错误的。我知道Webpack有一个配置,如果React是窗口上的全局变量,它似乎可以工作。在我的例子中,它不是一个全局变量;这是HelloWorldApp
需要的模块

我还在MyReactComponent的Webpack配置中尝试了类似的方法(似乎没有特别记录):


但它似乎总是返回
undefined
,而不是HelloWorldApp中的React实例。有人能给我一些启发吗?

我发现,如果我为MyReactComponent配置Webpack,如下所示:

externals: {
  "react": "require('react')"
}
该网页包创建了一个类似这样的模块来代替实际的React代码:

/***/ },
/* 2 */
/***/ function(module, exports) {

    module.exports = require("react");

/***/ },
HelloWorldApp
require
s MyReactComponent,因此当HelloWorldApp的webpack进程运行时,它会将上面的代码替换为:

/***/ },
/* 2 */
/***/ function(module, exports) {

    module.exports = __webpack_require__(381);

/***/ }
有了它,MyReactComponent现在可以访问HelloWorldApp的React


这是可行的,但我认为这不是一个真正的工作流程。我疯了吗?

你有没有进一步的发现?我试图做一些类似的事情。我最终没有使用MyReactComponent的Webpack,而是通过Babel运行MyReactComponent(因为源代码在es6中),输出就是我发布到npm的内容。MyReactComponent源文件中的
import
import React from'React'经过Babel之后的输出是
var\u react=require('react')。有了它,HelloWorldApp需要/导入Babel编译版本的MyReactComponent,通过这样做,MyReactComponent从HelloWorldApp.Hmm获得React。。。我尝试了一下,使用Webpack的“externals”似乎对我很好。我用的是角度,但我认为同样的概念应该适用。在MyAngularComponent中,我指定了
externals:{'angular':'angular'}
,并将angular 1.5.7列为devDependency+peerDependency。在HelloWorldApp中,我将Angular 1.5.6保存为常规依赖项。在我的HelloWorldApp中运行时,MyAngularComponent内部需要的Angular版本随后解析为1.5.6。我还在学习,所以可能我做错了什么,但它似乎对我有用。我认为使用
externals
仅仅意味着当MyAngularComponent需要角度时,它将使用
window.angular
。我猜你的HelloWorldApp正在加载angular,它正在设置
窗口。angular
。但我知道什么…是的,这就是正在发生的事情。我没有意识到我仍然将Angular作为脚本标记加载,这就是为什么externals事件“似乎”正在解决的原因,但一旦我删除了该脚本标记,使其只能从require()中提取,现在我遇到了与externals现在失败的问题相同的问题:(