【问题标题】:Module not found: Can't resolve 'react/lib/React'未找到模块:无法解析“react/lib/React”
【发布时间】:2018-09-21 12:31:20
【问题描述】:

我一直在尝试运行我在 Github 上找到的现有 React 项目。我遇到了一些问题。首先,我需要将 React 更新到 v 16.2.0 以使 React.Fragment 正常工作。现在,完成更新后,我收到了第二个问题:

./node_modules/react-dom/lib/ReactCompositeComponent.js
Module not found: Can't resolve 'react/lib/React' in '/Users/sahandzarrinkoub/Documents/Programming/DH2642/Sentify/repo/Sentify/node_modules/react-dom/lib'

从控制台:

index.js:2178 ./node_modules/react-dom/lib/instantiateReactComponent.js
Module not found: Can't resolve 'react/lib/getNextDebugID' in '/Users/sahandzarrinkoub/Documents/Programming/DH2642/Sentify/repo/Sentify/node_modules/react-dom/lib'
__stack_frame_overlay_proxy_console__   @   index.js:2178
handleErrors    @   webpackHotDevClient.js:178
./node_modules/react-dev-utils/webpackHotDevClient.js.connection.onmessage  @   webpackHotDevClient.js:211
./node_modules/sockjs-client/lib/event/eventtarget.js.EventTarget.dispatchEvent @   eventtarget.js:51
(anonymous) @   main.js:274
./node_modules/sockjs-client/lib/main.js.SockJS._transportMessage   @   main.js:272
./node_modules/sockjs-client/lib/event/emitter.js.EventEmitter.emit @   emitter.js:50
WebSocketTransport.ws.onmessage @   websocket.js:35
  1. 这个错误的原因是什么?
  2. 如何解决?

附加信息:

这里是项目主文件夹。这是 package.json 文件:

{
  "name": "Sentify",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "ajv": "^5.5.2",
    "cors": "^2.8.4",
    "dom": "0.0.3",
    "jquery": "^3.3.1",
    "jsdom": "^11.7.0",
    "mapbox-gl": "^0.44.1",
    "material-ui": "^0.20.0",
    "react": "^16.2.0",
    "react-d3-basic": "^1.6.11",
    "react-d3-core": "^1.3.9",
    "react-d3-shape": "^0.3.25",
    "react-dom": "^15.6.2",
    "react-router-dom": "^4.3.0-rc.2",
    "react-scripts": "1.1.1",
    "react-simple-pie-chart": "^0.5.0",
    "webpack": "^3.11.0"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "devDependencies": {}
}

我正在通过键入 npm install 并使用 npm start 托管来创建 node_modules 文件夹。

我删除了node_modules,再次运行npm install; npm start,错误稍微改成了:

./node_modules/react-dom/lib/ReactMount.js
Module not found: Can't resolve 'react/lib/React' in '/Users/sahandzarrinkoub/Documents/Programming/DH2642/Sentify/repo/Sentify/node_modules/react-dom/lib'

在控制台中:

index.js:2178 ./node_modules/react-dom/lib/instantiateReactComponent.js
Module not found: Can't resolve 'react/lib/getNextDebugID' in '/Users/sahandzarrinkoub/Documents/Programming/DH2642/Sentify/repo/Sentify/node_modules/react-dom/lib'
__stack_frame_overlay_proxy_console__   @   index.js:2178
handleErrors    @   webpackHotDevClient.js:178
./node_modules/react-dev-utils/webpackHotDevClient.js.connection.onmessage  @   webpackHotDevClient.js:211
./node_modules/sockjs-client/lib/event/eventtarget.js.EventTarget.dispatchEvent @   eventtarget.js:51
(anonymous) @   main.js:274
./node_modules/sockjs-client/lib/main.js.SockJS._transportMessage   @   main.js:272
./node_modules/sockjs-client/lib/event/emitter.js.EventEmitter.emit @   emitter.js:50
WebSocketTransport.ws.onmessage @   websocket.js:35

来自控制台的附加堆栈跟踪:

ReactDebugTool.js:14 Uncaught Error: Cannot find module "react/lib/ReactComponentTreeHook"
    at webpackMissingModule (ReactDebugTool.js:14)
    at Object../node_modules/react-dom/lib/ReactDebugTool.js (ReactDebugTool.js:14)
    at __webpack_require__ (bootstrap f031d93a2683340d518f:678)
    at fn (bootstrap f031d93a2683340d518f:88)
    at Object../node_modules/react-dom/lib/ReactInstrumentation.js (ReactInstrumentation.js:17)
    at __webpack_require__ (bootstrap f031d93a2683340d518f:678)
    at fn (bootstrap f031d93a2683340d518f:88)
    at Object../node_modules/react-dom/lib/ReactReconciler.js (ReactReconciler.js:12)
    at __webpack_require__ (bootstrap f031d93a2683340d518f:678)
    at fn (bootstrap f031d93a2683340d518f:88)
    at Object../node_modules/react-dom/lib/ReactUpdates.js (ReactUpdates.js:17)
    at __webpack_require__ (bootstrap f031d93a2683340d518f:678)
    at fn (bootstrap f031d93a2683340d518f:88)
    at Object../node_modules/react-dom/lib/ChangeEventPlugin.js (ChangeEventPlugin.js:15)
    at __webpack_require__ (bootstrap f031d93a2683340d518f:678)
    at fn (bootstrap f031d93a2683340d518f:88)
    at Object../node_modules/react-dom/lib/ReactDefaultInjection.js (ReactDefaultInjection.js:13)
    at __webpack_require__ (bootstrap f031d93a2683340d518f:678)
    at fn (bootstrap f031d93a2683340d518f:88)
    at Object../node_modules/react-dom/lib/ReactDOM.js (ReactDOM.js:14)
    at __webpack_require__ (bootstrap f031d93a2683340d518f:678)
    at fn (bootstrap f031d93a2683340d518f:88)
    at Object../node_modules/react-dom/index.js (index.js:3)
    at __webpack_require__ (bootstrap f031d93a2683340d518f:678)
    at fn (bootstrap f031d93a2683340d518f:88)
    at Object../src/index.js (discover.js:19)
    at __webpack_require__ (bootstrap f031d93a2683340d518f:678)
    at fn (bootstrap f031d93a2683340d518f:88)
    at Object.0 (welcome.js:22)
    at __webpack_require__ (bootstrap f031d93a2683340d518f:678)
    at ./node_modules/ansi-regex/index.js.module.exports (bootstrap f031d93a2683340d518f:724)
    at bootstrap f031d93a2683340d518f:724

【问题讨论】:

  • 我可以说兼容性问题,你能告诉我你将哪个 GitHub 项目升级到 React 16.2.0。
  • github项目就是这个:github.com/NiekBijman/Sentify。请注意,我还删除了屏幕截图中的 node_modules 文件夹,并为该项目重新安装了 React。这样我就不需要升级 React,但问题仍然存在!

标签: reactjs


【解决方案1】:

您的情况显然是 react 和 react-dom 包不兼容。 确保您的 react 和 react-dom 包具有相同的版本以避免不兼容。

package.json 现在:

...

"react": "^16.2.0",
"react-dom": "^15.6.2", 

...

package.json 具有兼容的 react-dom 和 react 包:

...

"react": "^16.2.0",
"react-dom": "^16.2.0", 

...

因为react-v0.14-beta-1 react 和 react-dom 是独立的库,你应该使用相同的版本。

现在,请在你的系统中使用相同版本的 react 和 react-dom 应用程序以避免版本控制问题 - 但我们计划删除它 以后有要求。 (此版本包括反应中的旧方法 带有弃用警告的软件包,但它们将被完全删除 在 0.15 中。)。

【讨论】:

    【解决方案2】:

    如果您未在 Webpack 配置中指定 .js 是可解析的扩展,也会发生这种情况。

    当 Webpack 查找 ./lib/React 时,它不会查找 ./lib/React.js 文件,例如,如果您仅将 .ts 指定为可解析的扩展名。

    Source

    【讨论】:

      【解决方案3】:

      当你更新你的 react 版本而不是 react-dom 版本时,有时会发生这种情况。

      因此,请始终确保 package.json 中的 react 和 react-dom 版本相同

      【讨论】:

        【解决方案4】:

        在我的一个项目中,我将 lerna 用于 mono-repo,并有 react、react-dom 的别名条目。我删除了别名,它对我有用。

        【讨论】:

          猜你喜欢
          • 2021-11-24
          • 2017-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-12
          • 2020-10-13
          • 2021-10-31
          相关资源
          最近更新 更多