2016-11-17 161 views
21

我使用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(昨天發佈)中存在一個重構,它在該目錄中移動了一些東西。 –

回答

19

這個問題是關係到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

2

這可能僅僅是一個依賴問題。它要麼沒有得到正確版本的反應,要麼沒有正確安裝。

# 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

6

您正在使用過時的react-hot-loader程序包,該程序包使用內部反應API通過react\lib\ReactMount。現在反應不允許這個問題。

嘗試將其升級到最新版本:

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

感謝您對所有的答案。我已經解決了我的問題。

" 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' 
1

非常感謝cheesemacfly,我能夠解決同樣的問題,你的建議刪除從加載「反應熱」。

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

我改:

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

記住要改變,因爲你不再引用列表中的單詞「裝載機」到「裝載機」。

6

上述解決方案都不適用於我。 在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

0

更新react-hot-loader並沒有爲我工作,但在取出react-hot形式裝載機列表中,通過簡單地評論它,解決了該問題:

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

我有同樣的問題,沒有解決方案的工作。然後,我發現似乎沒有反應。我在安裝並卸載postgreSQL的軟件包後遇到了問題。

所以我加了它。 PS,我用紗線

yarn add react 
相關問題