“模块未找到:错误:无法解析模块'react/lib/ReactMount'”

问题描述:

我使用Reactjs和webpack启动项目,并且当我在命令提示符下运行“节点服务器”时,这样的:“模块未找到:错误:无法解析模块'react/lib/ReactMount'”

enter image description here

和Chrome Explorer中打开成功的,但也存在以下问题:

enter image description here

GitHub的是:(github.com/Yangqin0607/gallery)

这里是的package.json

{ 
    "private": true, 
    "version": "0.0.1", 
    "description": "YOUR DESCRIPTION - Generated by generator-react-webpack", 
    "main": "", 
    "scripts": { 
    "clean": "rimraf dist/*", 
    "copy": "copyfiles -f ./src/index.html ./src/favicon.ico ./dist", 
    "dist": "npm run copy & webpack --env=dist", 
    "lint": "eslint ./src", 
    "posttest": "npm run lint", 
    "release:major": "npm version major && npm publish && git push --follow-tags", 
    "release:minor": "npm version minor && npm publish && git push --follow-tags", 
    "release:patch": "npm version patch && npm publish && git push --follow-tags", 
    "serve": "node server.js --env=dev", 
    "serve:dist": "node server.js --env=dist", 
    "start": "node server.js --env=dev", 
    "test": "karma start", 
    "test:watch": "karma start --autoWatch=true --singleRun=false" 
    }, 
    "repository": "", 
    "keywords": [], 
    "author": "Your name here", 
    "devDependencies": { 
    "babel-core": "^6.0.0", 
    "babel-eslint": "^6.0.0", 
    "babel-loader": "^6.0.0", 
    "babel-polyfill": "^6.3.14", 
    "babel-preset-es2015": "^6.0.15", 
    "babel-preset-react": "^6.0.15", 
    "babel-preset-stage-0": "^6.5.0", 
    "bower-webpack-plugin": "^0.1.9", 
    "chai": "^3.2.0", 
    "copyfiles": "^1.0.0", 
    "css-loader": "^0.23.0", 
    "eslint": "^3.0.0", 
    "eslint-loader": "^1.0.0", 
    "eslint-plugin-react": "^6.0.0", 
    "file-loader": "^0.9.0", 
    "glob": "^7.0.0", 
    "isparta-instrumenter-loader": "^1.0.0", 
    "karma": "^1.0.0", 
    "karma-chai": "^0.1.0", 
    "karma-coverage": "^1.0.0", 
    "karma-mocha": "^1.0.0", 
    "karma-mocha-reporter": "^2.0.0", 
    "karma-phantomjs-launcher": "^1.0.0", 
    "karma-sourcemap-loader": "^0.3.5", 
    "karma-webpack": "^1.7.0", 
    "minimist": "^1.2.0", 
    "mocha": "^3.0.0", 
    "null-loader": "^0.1.1", 
    "open": "0.0.5", 
    "phantomjs-prebuilt": "^2.0.0", 
    "react-addons-test-utils": "^15.0.0", 
    "react-hot-loader": "^1.2.9", 
    "rimraf": "^2.4.3", 
    "style-loader": "^0.13.0", 
    "url-loader": "^0.5.6", 
    "webpack": "^1.12.0", 
    "webpack-dev-server": "^1.12.0" 
    }, 
    "dependencies": { 
    "core-js": "^2.0.0", 
    "normalize.css": "^4.0.0", 
    "react": "^15.0.0", 
    "react-dom": "^15.0.0" 
    } 
} 
+1

不言而喻,你肯定'G:\ toolsForFE \库\ node_modules \反应过来\ LIB \ ReactMount'存在? –

+0

react \ lib中没有ReactMout,但我不知道如何获得ReactMout。我尝试运行命令“npm install ReactMount”,但失败了。顺便说一句,我只是运行命令“npm install generator-react-webpack”和“yo react-webpack gallery”,之后我运行“节点服务器”打开服务器,然后出现了错误,但是我没有修改任何东西 – Ailsa

+1

您正在使用哪个版本的React?从'react/lib /'导入从来没有得到支持,并且React 15.4(昨天发布)中存在一个重构,它在该目录中移动了一些东西。 –

这个问题是关系到react-hot-loader包。您正在使用的旧版本依赖node_modules/react/lib文件夹中存在的ReactMount.js文件。

有没有简单的方法之一修复了这一点,但你有几个选项:

  1. 尝试按照说明操作:https://github.com/gaearon/react-hot-loader/blob/v3.0.0-beta.6/docs/README.md#usage-with-external-react(但我一直不走运至今)

  2. 取出热reloader的反应(在你的webpack.config删除'react-hot'装载机)

  3. 更新react-hot-loader包3版本(这里是如何这样做:https://github.com/gaearon/redux-devtools/commit/64f58b7010a1b2a71ad16716eb37ac1031f93915)。但是请注意,这个包已经在阿尔法现在一段时间...

  4. 回滚你的反应版本,一个包含lib文件夹中的ReactMount.js(15.0.1曾经有过这个文件不知道,当它停止) 。

更新:阵营热装载机3现正处于测试阶段提供更全面的升级指南:https://github.com/gaearon/react-hot-loader/tree/v3.0.0-beta.7/docs#migration-to-30

这可能仅仅是一个依赖问题。它要么没有得到正确版本的反应,要么没有正确安装。

# update npm 
$ npm install -g npm 

# reinstall the generator-react-webpack package (note the global tags) 
$ npm install -g yo 
$ npm install -g generator-react-webpack 

然后尝试生成您的应用程序。

+0

我已更新npm,并按照您的建议重新安装generator-react-webpack。问题仍然存在。 – Ailsa

+0

你可以发布你的'package.json'文件吗? –

+1

这个例子中的第一个命令应该是'''npm update''' – Goldnuggets

您正在使用过时的react-hot-loader程序包,该程序包使用内部反应API通过react\lib\ReactMount。现在反应不允许这个问题。

尝试将其升级到最新版本:

$ npm install --save-dev [email protected] 

感谢您对所有的答案。我已经解决了我的问题。

" This issue is related to the react-hot-loader package. You are using an old version that relies on the ReactMount.js file being present in the node_modules/react/lib folder." said by cheesemacfly.

因此,这里是我的解决方案:在更新反应热加载器到最新版本

npm install --save-dev [email protected] 

但这里 1)与反应热加载器相连接的另一个问题 enter image description here

2),所以我除去反应热装载机从 'CFG/dev.js' 改变代码

loader: 'react-hot!babel-loader' 

loader: 'babel-loader' 

非常感谢cheesemacfly,我能够解决同样的问题,你的建议删除从加载“反应热”。

{ 
    test: /\.(js|jsx)$/, 
    loaders: ['react-hot', 'babel'], 
    exclude: /(node_modules|lib\/ckeditor)/ 
} 

我改:

{ 
    test: /\.(js|jsx)$/, 
    loader: 'babel', 
    exclude: /(node_modules|lib\/ckeditor)/ 
} 

记住要改变,因为你不再引用列表中的单词“装载机”到“装载机”。

上述解决方案都不适用于我。 在github问题/评论的兔子洞中度过了一天的其余时间,衡量各种hacky变通方法的优点/缺点/可行性。

最快捷,最简单的,“我只是想在我打算在今天的工作最初的问题作品”修复为我工作来源于:https://github.com/gaearon/react-hot-loader/issues/417#issuecomment-261548082

在你的WebPack配置,下面的别名添加到resolve部分:

resolve: { 
    alias: { 'react/lib/ReactMount': 'react-dom/lib/ReactMount' } 
} 

这是不是一个长期稳定的修复,这是一个发展的唯一的解决方法,所以你可以继续,而无需*应对的升级问题出蓝色的发展。

我仍然不是100%确定为什么我在我的一个应用程序中看到这个问题,而不是另一个,都生成了fountain.js react-redux生成器,并且具有相同的package.json

+1

谢谢你为我节省了几个小时。我有完全相同的问题,这个临时解决方案为我工作。 –

+0

只是不要忘记“临时”的一部分! :) – rkd

+0

你部署了一个,不会有问题吗?我不理解你为什么一直说这是一个“临时”修复......没有别的可以做的事情。 – Badrush

更新react-hot-loader并没有为我工作,但在取出react-hot形式装载机列表中,通过简单地评论它,解决了该问题:

{ 
    test: /\.js$/, 
    exclude: /node_modules/, 
    loaders: [ 
     // 'react-hot', 
     'babel' 
    ] 
} 

我有同样的问题,没有解决方案的工作。然后,我发现似乎没有反应。我在安装并卸载postgreSQL的软件包后遇到了问题。

所以我加了它。 PS,我用纱线

yarn add react