2016-11-16 72 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是一個壞主意,在更新之後它們會再次中斷。 –

相關問題