2016-11-16 67 views
13

因此,当我开始收到ReactMount不在React/lib/ReactMount的错误时,我试图将我的react-webpack应用放在Heroku上。然后我尝试了很多不同的东西,最终尝试用同样的react-webpack生成器创建一个新项目。现在,即使在本地主机上运行时也会遇到同样的错误,这意味着它必定是由于某处的更新造成的,对吗?更新后出现错误:无法解析模块'react/lib/ReactMount'

有没有人知道这件事?

我有以下的依存关系:

"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", 
"firebase": "^3.5.2", 
"input-moment": "^0.3.0", 
"moment": "^2.15.2", 
"normalize.css": "^4.0.0", 
"react": "^15.0.0", 
"react-bootstrap-datetimepicker": "0.0.22", 
"react-datetimepicker-bootstrap": "^1.1.2", 
"react-dom": "^15.0.0", 
"webpack": "^1.13.3" 
+0

您使用的是哪个版本的React?他们今天发布了一个新版本,它改变了内部API。 'React/lib'里面的东西被移动了;它不是公共API的一部分,不应该直接引用。如果你升级到React 15.4,那可能是问题所在。如果你没有明确地引用内部的东西,你可能会使用另一个软件包。 –

+1

我从字面上得到了同样的错误,使用React 15.3.1 – Lutando

+0

我正在使用react 15.0.0,如依赖关系所示。很抱歉,我对所有这些作品都不是很有信心,但是更新不应该以我现在拥有自己的依赖项的方式来影响项目,对吧? –

回答

0

什么工作对我来说是简单的变化作出反应,从:^ 15.0.0至15.3.1。

0

您需要更新react才能解决此问题。在我的情况下,我没有使用热装载机。升级来解决这个问题。使用try和catch来处理目前的15.4.0

-1

转到node_modules /反应热装载机/ index.js和使用尝试捕捉,而不是需要

将这段代码

prependText = [ 
'/* REACT HOT LOADER */', 
'if (module.hot) {', 
    '(function() {', 
    'var ReactHotAPI = require(' + JSON.stringify(require.resolve('react-hot-api')) + '),', 
     'RootInstanceProvider = require(' + JSON.stringify(require.resolve('./RootInstanceProvider')) + '),', 
     'ReactMount = require("react/lib/ReactMount"),', 
     'React = require("react");', 

    'module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function() {', 
     'return RootInstanceProvider.getRootInstances(ReactMount);', 
    '}, React);', 
    '})();', 
'}', 
'try {', 
    '(function() {', 
].join(' '); 

新代码错误

var reactMountImport; 
    try { 
require('react-dom/lib/ReactMount'); 
    reactMountImport = 'ReactMount = require("react-dom/lib/ReactMount"),'; 
    } catch(e) { 
    console.log(e) 
    reactMountImport = 'ReactMount = require("react/lib/ReactMount"),'; 
    } 

prependText = [ 
'/* REACT HOT LOADER */', 
'if (module.hot) {', 
    '(function() {', 
    'var ReactHotAPI = require(' + JSON.stringify(require.resolve('react-hot-api')) + '),', 
     'RootInstanceProvider = require(' + JSON.stringify(require.resolve('./RootInstanceProvider')) + '),', 
     reactMountImport, 
     'React = require("react");', 

    'module.makeHot = module.hot.data ? module.hot.data.makeHot : ReactHotAPI(function() {', 
     'return RootInstanceProvider.getRootInstances(ReactMount);', 
    '}, React);', 
    '})();', 
'}', 
'try {', 
    '(function() {', 
].join(' '); 
这里

可以检查变化 https://github.com/gaearon/react-hot-loader/pull/430/commits/4ff08252bd8bf90dbc89fc6d032f557825ec0300#diff-168726dbe96b3ce427e7fedce31bb0bc

+0

手动编辑node_modules是一个坏主意,在更新之后它们会再次中断。 –

相关问题