"модуль не найден: Ошибка: не удается разрешить модуль" реакция /lib/ReactMount ""
Я использовал Reactjs и webpack для запуска проекта, и когда я запускаю "node сервер" в командной строке, появляется такая ошибка:
![введите описание изображения здесь]()
И проводник Chrome появился успешно, но также имеет следующие проблемы:
![введите описание изображения здесь]()
Github: (github.com/Yangqin0607/gallery)
Вот пакет .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
Эта проблема связана с пакетом react-hot-loader
. Вы используете старую версию, которая опирается на файл ReactMount.js
, присутствующий в папке node_modules/react/lib
.
Для этого нет простого исправления, но у вас есть несколько вариантов:
Обновление: React Hot Loader 3 теперь находится в бета-версии с более полным руководством по обновлению: https://github.com/gaearon/react-hot-loader/tree/v3.0.0-beta.7/docs#migration-to-30
Ответ 2
Вы используете устаревший пакет react-hot-loader
, который использует внутреннюю реакцию api throught react\lib\ReactMount
. Теперь реакция не позволяет это, следовательно, проблема.
Попробуйте обновить его до последней версии:
$ npm install --save-dev [email protected]
Ответ 3
Ни один из вышеперечисленных решений не работал у меня.
Проводил остаток дня в кроличьей дыре от проблем/комментариев github, взвешивая плюсы/минусы/выполнимость различных хакерских обходных решений.
Самый быстрый, самый простой вариант: "Я просто хочу работать над оригинальной проблемой, над которой я собирался работать сегодня". Исправление, которое сработало для меня, происходит от: 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
response-redux и имеют идентичные package.json
.
Ответ 4
Спасибо за все ваши ответы. Я решил свои проблемы.
"Эта проблема связана с пакетом реакции-hot-loader. Вы используете старую версию, которая опирается на файл ReactMount.js, который присутствует в папке node_modules/react/lib." сказал cheesemacfly.
Итак, вот решение для меня:
1) обновление реактивного горячего загрузчика до последней версии
npm install --save-dev [email protected]
но вот еще одна проблема, связанная с реакционно-горячим загрузчиком
![введите описание изображения здесь]()
2), поэтому я удалил реактивный нагреватель с 'cfg/dev.js'
изменить код
loader: 'react-hot!babel-loader'
в
loader: 'babel-loader'
Ответ 5
Это, вероятно, просто проблема зависимости. Он либо не получает правильную версию реакции, либо не устанавливает ее правильно.
# 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
Затем попытайтесь сгенерировать свое приложение.
Ответ 6
У меня была такая же проблема, и ни одно из решений не работало. Тогда мне пришло в голову, что кажется, что реакция отсутствует. У меня возникла проблема после установки и удаления пакета для postgreSQL.
Поэтому я добавил его. PS, я использовал пряжу
yarn add react
Ответ 7
Огромное спасибо cheesemacfly, я смог решить ту же проблему с вашим предложением удалить "реактив-горячий" из загрузчика.
{
test: /\.(js|jsx)$/,
loaders: ['react-hot', 'babel'],
exclude: /(node_modules|lib\/ckeditor)/
}
I Изменено:
{
test: /\.(js|jsx)$/,
loader: 'babel',
exclude: /(node_modules|lib\/ckeditor)/
}
Не забудьте изменить слово "загрузчики" на "загрузчик", поскольку вы больше не ссылаетесь на список.
Ответ 8
Обновление react-hot-loader
не сработало для меня, но, удалив форму react-hot
из списка загрузчиков, просто комментируя ее, исправлена проблема:
{
test: /\.js$/,
exclude: /node_modules/,
loaders: [
// 'react-hot',
'babel'
]
}