webpack-dev-горячая перезагрузка сервера не работает
моя структура файла:
dist
css
style.css
index.html
js
bundle.js
src
css
style.css
index.html
js
main.js
node_modules
webpack.config.js
package.json
мой webpack.конфиг.js выглядит так:
module.exports = {
entry: './src/js/main.js',
output: {
path: __dirname,
filename: './dist/js/bundle.js'
},
module: {
loaders: [
{
test: /.js$/,
exclude: /(node_modules)/,
loader: 'babel',
query: {
presets: ['es2015']
}
},
{
test: /.vue$/,
loader: 'vue'
}
]
}
};
Я бегу:
webpack-dev-server --content-base dist --hot
и он строит и кажется, что он работает. localhost: 8080 показывает ожидаемый результат, но горячая перезагрузка просто не работает. Когда я меняю файл, я вижу в терминале, что происходит перестройка, но ничего не происходит в браузере. Я что-то пропустил в конфигурации?
7 ответов
при использовании webpack-dev-server
, он строит все файлы внутри и не выплюнуть их в свой выходной путь. Бег!--2--> один, без dev-сервера, выполняет фактическую компиляцию на диск. Сервер dev делает все в памяти, что ускоряет повторную компиляцию на много.
чтобы исправить проблему горячей перезагрузки, установите базу содержимого в исходный каталог и включите встроенный-режим
вот так:
webpack-dev-server --content-base src --hot --inline
что сработало для меня, так это написать <script src="bundle.js">
, а не <script src="dist/bundle.js">
в своем .
// index.html
<script src="bundle.js"></script> // works
<script src="dist/bundle.js"></script> // doesn't work!
содержание dist/bundle.js
поскольку выходной файл работает отлично, если вы просто создадите его с помощью webpack
. Но при использовании webpack-dev-server
, статический файл уже в файловой системе продолжает обслуживаться, а не последняя горячая замена. Кажется webpack-dev-server
путается, когда видит dist/bundle.js
в html-файле и не заменяет его, Хотя webpack.config.js
настроен на этот путь.
-- inline --hot не было проблемой для меня
Если вы используете redux можете попробовать это.
по какой-то случайной причине redux-devtools
не разрешал горячую перезагрузку для меня. Попробуйте удалить его из корневого компонента и redux compose
config.
Примечание: используйте расширение браузера redux devtool с этой конфигурацией в конфигурации вашего магазина:window.devToolsExtension ? window.devToolsExtension() : f => f
кроме того, необходимо прочитать: https://medium.com/@rajaraodv/webpacks-hmr-react-hot-loader-the-missing-manual-232336dc0d96#.ejpsmve8f
или попробуйте горячую перезагрузку 3: пример: https://github.com/gaearon/redux-devtools/commit/64f58b7010a1b2a71ad16716eb37ac1031f93915
горячая перезагрузка Webpack перестала работать и для меня. Решением для меня было удалить node_modules
папка и свежая установка всех зависимостей.
Просто откройте родительскую папку node_modules
в вашем терминале и запустите npm install
попробуйте это:
в своем package.json
файл, удалите строку, содержащую "test" "echo \"Error: no test specified\" && exit 1"
под объектом scripts и замените его на:
...
"scripts": {
"start": "webpack-dev-server --hot"
},
...
затем, чтобы перезапустить проект, просто используйте npm start
.
это работало для меня, когда я столкнулся с этой проблемой.
Edit: можете ли вы поделиться своим ?
попробуйте добавить это в webpack.конфиг.JS а также
devServer: {
inline: true,
port: 3000,
hot: true
},
Проверьте журналы консоли, если он имеет ниже ошибку, а затем добавьте cors в файл webpack dev server
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin react hot reload
идеально добавить ниже запись в вас dev server js
headers: { "Access-Control-Allow-Origin": "*" },
100% Рабочий Раствор
вы должны просто выполнить 3 шага, и вы получите горячую перезагрузку, как вы ожидали
- включить ключ "publicPath"в свойство" Output " конфигурации webpack. "publicPath"должен содержать путь к вашему пакету.JS-файл, чтобы dev-сервер знал, есть ли какие-либо изменения в вашем пакете.JS файл и он будет перезагрузить приложение.
ваша конфигурация должна выглядеть так -
output: { path: __dirname, publicPath:"/dist/js/", filename: './dist/js/bundle.js' }
- добавить опцию "devServer" в конфигурационный файл -
devServer:{ contentBase:"/src/", inline:true, stats:"errors-only" }
обратите внимание:contentBase должен указывать на путь, куда вы помещаете свой индекс.html-файл, который содержит ваш тег скрипта в вашем случае это будет " / src/"
- наконец, вы должны убедиться, что атрибут " src "вашего тега "script"в индексе.html указывает на bundle.Яш, начиная с "http://localhost:port" как следовать -
<script src="http://localhost:portnumber + value in publicPath + bundle.js"></script>
в вашем случае это будет выглядеть так -
<script src="http://localhost:8080/js/dist/bundle.js" type="text/javascript"></script>
и, наконец, помните webpack-dev-server doesn't compile your js file or make build or watch on your js
файл он дозирует все в памяти, чтобы посмотреть на ваш JS-файл, который вы должны запустить
webpack --watch
в отдельным окне