【问题标题】:ERROR in ./~/react-tap-event-plugin/src/injectTapEventPlugin.js./~/react-tap-event-plugin/src/injectTapEventPlugin.js 中的错误
【发布时间】:2016-11-18 05:34:57
【问题描述】:

在这里反应菜鸟。尝试克隆并运行https://github.com/strangebnb/react-airbnb

我克隆。运行 npm 安装。然后 webpack 但我得到了

ERROR in ./~/react-tap-event-plugin/src/injectTapEventPlugin.js
Module not found: Error: Cannot resolve module 'react/lib/EventPluginHub' in /Users/thomas/tom/node_modules/react-tap-event-plugin/src
 @ ./~/react-tap-event-plugin/src/injectTapEventPlugin.js 23:2-37

ERROR in ./~/react-tap-event-plugin/src/TapEventPlugin.js
Module not found: Error: Cannot resolve module 'react/lib/EventConstants' in /Users/thomas/tom/node_modules/react-tap-event-plugin/src
 @ ./~/react-tap-event-plugin/src/TapEventPlugin.js 22:21-56

ERROR in ./~/react-tap-event-plugin/src/TapEventPlugin.js
Module not found: Error: Cannot resolve module 'react/lib/EventPluginUtils' in /Users/thomas/tom/node_modules/react-tap-event-plugin/src
 @ ./~/react-tap-event-plugin/src/TapEventPlugin.js 23:23-60

ERROR in ./~/react-tap-event-plugin/src/TapEventPlugin.js
Module not found: Error: Cannot resolve module 'react/lib/EventPropagators' in /Users/thomas/tom/node_modules/react-tap-event-plugin/src
 @ ./~/react-tap-event-plugin/src/TapEventPlugin.js 24:23-60

ERROR in ./~/react-tap-event-plugin/src/TapEventPlugin.js
Module not found: Error: Cannot resolve module 'react/lib/SyntheticUIEvent' in /Users/thomas/tom/node_modules/react-tap-event-plugin/src
 @ ./~/react-tap-event-plugin/src/TapEventPlugin.js 25:23-60

ERROR in ./~/react-tap-event-plugin/src/TapEventPlugin.js
Module not found: Error: Cannot resolve module 'react/lib/ViewportMetrics' in /Users/thomas/tom/node_modules/react-tap-event-plugin/src
 @ ./~/react-tap-event-plugin/src/TapEventPlugin.js 27:22-58

ERROR in ./~/react-portal/build/portal.js
Module not found: Error: Cannot resolve module 'react/lib/CSSPropertyOperations' in /Users/thomas/tom/node_modules/react-portal/build
 @ ./~/react-portal/build/portal.js 17:29-71

我找到了https://github.com/thereactivestack/meteor-webpack/issues/21(我看到这是最近的,阅读:昨天),在弄乱了我的packages.json,更改了react、react-dom、material-ui版本号并运行npm i --save react-tap-event-plugin之后,我只收到 1 条错误消息

ERROR in ./~/react-portal/build/portal.js
Module not found: Error: Cannot resolve module 'react/lib/CSSPropertyOperations' in /Users/thomas/react-airbnb/node_modules/react-portal/build
 @ ./~/react-portal/build/portal.js 17:29-71

我很新,我不知道如何解决这个问题。非常欢迎任何提示。

谢谢

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    由于 React 中的更新,react-tap-event-plugin 中断

    如果使用 react 版本 ^15.4.0,请将 package.json 中的 react-tap-event-plugin 更改为 ^2.0.0

    【讨论】:

    • 不错的发现。谢谢
    • 最简单的解决方案。
    • 不错的发现,没错。我很确定你只是重写了我的答案。哈哈。解决您自己的问题。
    • 如果您使用的是 16+ 怎么办?这似乎不起作用。
    • @OliverDixon 写这篇文章的用户只是从我的答案中复制了详细信息,不知道为什么或如何解决这个问题。你会发现,从 React 16 开始,tap 事件插件已被弃用,因为 react tap 事件在 react 中依赖的方法已被删除。查看他们的弃用通知:npmjs.com/package/react-tap-event-plugin
    【解决方案2】:

    我分叉了那个 repo 并在我的 repo 中修复了这个问题。此外,向原始仓库的所有者发送了拉取请求。这是我的分叉回购的链接: https://github.com/pankajvishwani/react-airbnb

    如果你不想克隆我的 repo,你可以在 webpack.config.js 中添加以下内容:

    var reactDomLibPath = path.join(__dirname, "./node_modules/react-dom/lib");
    var alias = {};
    ["EventPluginHub", "EventConstants", "EventPluginUtils", "EventPropagators",
     "SyntheticUIEvent", "CSSPropertyOperations", "ViewportMetrics"].forEach(function(filename){
        alias["react/lib/"+filename] = path.join(__dirname, "./node_modules/react-dom/lib", filename);
    });
    
    module.exports = {
      ...
      resolve: {alias: alias},
      ...
    }
    

    【讨论】:

    • 在较新版本的 react 中,CSSPropertyOperations.js 已移至 react-dom/lib/CSSPropertyOperations,但其他 npm 包正在 react/lib/CSSPropertyOperations 中寻找 CSSPropertyOperations。因此,对于所有此类模块,我添加了一个别名,例如:
    • “react/lib/CSSPropertyOperations”:“react-dom/lib/CSSPropertyOperations”。当 webpack 看到“react/lib/CSSPropertyOperations”时,它会自动转到“react-dom/lib/CSSPropertyOperations”
    • github.com/strangebnb/react-airbnb 的所有者接受了我的合并请求。你可以简单地做 git pull 并且事情应该可以工作。
    【解决方案3】:

    更新:从 React 16 开始,react-tap-event-plugin 已弃用且不再需要 https://www.npmjs.com/package/react-tap-event-plugin

    从 React 16 开始冗余的旧解决方案 如果您使用的是 React 15.4.0,将 react tap 事件插件更新到 2.0.1 以上将解决您的问题。

    一个新的 React 版本已经发布 (https://github.com/facebook/react/blob/master/CHANGELOG.md),我最近读到有很大的变化,react-dom 仍然秘密地存在于 react 包中,但现在正在被删除。如果您阅读 15.4.0,第一点:'React 包和浏览器构建不再“秘密”包含 React DOM。 (@sebmarkbage 在 #7164 和 #7168)'

    同时阅读点击事件插件 npm 文档:只有最新的点击事件插件(当前为 v2.0.1)支持 React 15.4+。 https://www.npmjs.com/package/react-tap-event-plugin

    检查 React 和 react-tap-event-plugin 的版本。 npm list --depth=0

    【讨论】:

    • 感谢您的建议。我更新了 react-tap-event-plugin 但仍然看到“CSSPropertyOperations”的最后一个错误。为此添加了别名。我已经为原始回购创建了一个拉取请求。希望我的更改将被合并。
    • Pankaj 提出了一个很好的观点。我通过更新修复了 react-tap-event 错误,并留下了 CssPropertyOperations,除非它们不是互斥的?
    • @Prof,CssPropertyOperations 的错误看起来像是包:react-portal 我没有。我会说该库仍在使用内部 react-dom 版本,需要他们进行修复,然后由您进行更新。请参考错误:ERROR in ./~/react-portal/build/portal.js Module not found: Error: Cannot resolve module 'react/lib/CSSPropertyOperations' in /Users/thomas/tom/node_modules/react-portal /build@./~/react-portal/build/portal.js 17:29-71
    • 正如 IanH 所说,您可以将版本修复为您支持的版本,而不是升级。我个人想升级。
    【解决方案4】:

    在短期内,您可以将 React 修复为特定的早期版本。

    如果您的 package.json 文件包含以下内容: "react": "^15.3.2",dependencies 部分,您可以将其更改为 "react": "=15.3.2”,

    【讨论】:

      【解决方案5】:

      对于 react 16+ react-tap-event-plugin 不再需要: react-tap-event-plugin

      【讨论】:

        猜你喜欢
        • 2019-01-27
        • 1970-01-01
        • 2016-10-21
        • 2017-02-03
        • 1970-01-01
        • 1970-01-01
        • 2016-11-02
        • 2022-11-17
        • 2023-03-24
        相关资源
        最近更新 更多