当前位置: 首页 > 面试题库 >

开发时如何避免React两次被Webpack加载

商同
2023-03-14
问题内容

给定以下目录结构:

my-project
|
|-- node_modules
    |
    |-- react
    |-- module-x
        |
        |--node_modules
            |
            |--react

您可以看到 my-projectmodule-x
都需要React。我对这个问题有同样的问题,但建议是从package.json依赖项中删除反应。我这样做了,只要在
module-x中 没有安装node_modules,它就可以正常工作,因为Webpack将使用 my-project中的 React
。但是,如果我正在开发 module-x 并已安装node_modules,则Webpack会同时使用 my-project
module-x的 React 。

我有办法让Webpack确保仅使用React的一个实例,即使在两个单独的级别都需要它吗?

我知道我可以在开发时将 module-x 放在一个单独的目录中,但是好像我必须先发布它,然后将其安装在 my-project中
以对其进行测试,但这并不是很有效。我考虑了一下npm link,但是没有运气,因为它仍然在 module-x中 安装了node_modules

这听起来很像我所面临的相同挑战,但似乎不是这样,npm dedupe或者Webpack的重复数据删除选项可以工作。我可能不了解一些重要的细节。


问题答案:

使用时通常会出现此问题npmlink。链接的模块将在其自己的模块树中解析其依赖性,这与需要它的模块之一不同。因此,该npm link命令peerDependencies也会安装dependencies

您可以resolve.alias用来强制require('react')解析为您的本地版本的React。

resolve: {
  alias: {
    react: path.resolve('./node_modules/react'),
  },
},


 类似资料:
  • 问题内容: 我来自PHP背景,想知道是否可以用Python做到这一点。 在PHP中,您可以用一块石头杀死2只鸟,如下所示: 代替: 我可以做这个: 您检查是否存在,如果存在,则在一条语句中将其分配给变量。 我想知道是否可以用Python做到这一点?因此,不要这样做: 避免写两次。 问题答案: 可能不完全是您的想法,但是… 这个?

  • 在使用LabelPropagation时,我经常遇到此警告(这应该是一个错误,因为它完全无法传播): /usr/local/lib/python3.5/dist-packages/sklearn/semi_supervised/label_propagation。py:279:RuntimeWarning:true_divit自身中遇到无效值。label_distributions_/=标准化器

  • 有软件正在阻止 Firefox 安全地连接至此网站 segmentfault.com 很像是一个安全(连接加密)的网站,但我们未能与它建立安全连接。这个问题是由 Fiddler Root Certificate Authority 所造成,它是您的计算机或您所在网络中的软件。 您可以做什么? segmentfault.com 启用了被称为 HTTP严格传输安全(HSTS)的安全策略,Firefox

  • 问题内容: 我正在使用以下代码通过AJAX提交表单: 背景 我的PHP处理程序执行各种任务,然后发回响应。然后,我可以在成功或错误函数中执行某些操作。 我的问题 当用户双击表单的“提交”按钮时,将发生两次AJAX调用,这将导致我的PHP处理程序中的代码执行两次。 我的问题 如果用户双击提交,如何避免我的代码执行两次? 问题答案: 当AJAX调用再次出现时,请先禁用首次单击的“提交”按钮,然后重新启

  • 我最近开始将样式化组件与React一起使用,我不确定我是否正确地处理了一个不断重复出现的特定情况。 假设我有一个非常简单的组件,比如,它只需要非常多的样式和一些给定的内容。我现在要处理的事情如下: 我发现首先定义基本组件,如,只针对样式,然后再定义另一个组件,它接受道具并使用该样式组件。 有没有更短的方法只在一个组件中完成这两个任务?我希望能有一些像... ...但那似乎不起作用。

  • 我有一个反应应用程序开发的底漆-反应模板。它有一个管理仪表板,在仪表板侧板中有几条路由。我已经在我的index.js中设置了一个身份验证路由,当我访问每条路由时,它都运行得很好。但是当重新加载页面时,页面显示404页面找不到! 我保护“/”路径不受AUthrote的影响,这样每个以“/”开头的路径都受到保护(我在仪表板中有路由,如“/usertable”、“/users”、“/payments”等