Замена горячего модуля Laravel 5 Vue (HMR)

Мой Vue HOT MODULE REPLACEMENT (HMR) не работает. Что у меня есть и чем я занимаюсь:

  • локальный сервер на http: \ db7 \ на порту 80 в Windows 10 (xampp с php 7.2.6)
  • последняя версия laravel с composer install и npm install
  • следующий package.json: { "private": true, "scripts": { "dev": "npm run development", "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "watch-poll": "npm run watch -- --watch-poll", "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", "prod": "npm run production", "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", "live": "cross-env NODE_ENV=development webpack-dev-server --open --hot" }, "devDependencies": { "axios": "^0.18", "bootstrap": "^4.1.1", "cross-env": "^5.2.0", "jquery": "^3.2", "laravel-mix": "^2.0", "lodash": "^4.17.10", "popper.js": "^1.14.3", "vue": "^2.5.7" }, "dependencies": { "ajv": "^6.5.1", "bootstrap-datepicker": "^1.8.0", "js-cookie": "^2.2.0", "moment": "^2.22.2", "vue-flatpickr-component": "^7.0.4", "vue-router": "^3.0.1", "vue-snotify": "^3.1.0", "vuex": "^3.0.1" } }
  • в шаблоне laravel (лезвие) у меня есть <script src="{{ mix('js/app.js') }}"></script>, и когда я открываю страницу и смотрю код страницы, я вижу <script src="//localhost:8080//js/app.js"></script>. Когда npm run hot я могу видеть свои js, если открываю localhost:8080//js/app.js вручную из браузера. Я тоже пытаюсь написать URL вручную в шаблоне - <script src="http://localhost:8080/js/bundle.js"></script>. Тот же результат.
  • Когда npm run hot НЕ запускается netstat -ano | findstr 8080 в cmd clear - значит, порт 8080 не используется. Когда запущен npm run hot - 8080 СЛУШАЕТ.
  • Когда я запускаю npm run hot и перезагружаю страницу с приложением в консоли, никаких сообщений типа «HMR is running» и т.д.
  • Когда я делаю какие-либо изменения в своих компонентах Vue, я вижу, что в моей консоли PHPStorm «успешно скомпилировано», но в браузере никаких изменений. И еще - никаких изменений нет, если я перезагружу страницу с помощью ctrl + f5 или открою страницу в режиме chrome incognito. Если я снова открою localhost:8080//js/app.js в браузере вручную, в app.js не будет никаких изменений.
  • Мой webpack.mix.js в корневой папке laravel:

    let mix = require ('laravel-mix');

    mix.js ('ресурсы / активы / js / app.js', 'public / js') .sass ('ресурсы / активы / sass / app.scss', 'public / css');

Шаг за шагом:

  1. Установите свежий laravel composer create-project --prefer-dist laravel/laravel blog
  2. npm i
  3. npm run dev
  4. Откройте resources\views\welcome.blade.php, удалите все между <body></body> и добавьте следующее (см. Внизу)
  5. Зарегистрируйтесь в chrome http://blog/public/. Я вижу «Пример компонента».
  6. Откройте chrome DevTools на странице и откройте в ней консоль.
  7. В cmd в папке проекта запустите npm run hot и дождитесь компиляции
  8. Жесткая перезагрузка страницы в хроме (ctrl + f5). В консоли я вижу только следующее. Нет HRM.
  9. Попробуйте изменить компонент vue. В resources\assets\js\components\ExampleComponent.vue добавьте любой символ в HTML-код в шаблоне и проверьте страницу Chrome - никаких изменений. Жесткая перезагрузка страницы - без изменений!
  10. Я не делаю больше, чем описано выше

Код для №4

<div id="app">
    <example-component></example-component>
</div>
<script src="{{ mix('js/app.js') }}"></script>

Помогите пожалуйста!


person Teretto    schedule 25.06.2018    source источник
comment
Функциональность HMR должна работать с веб-сокетами, пробовали ли вы проверить данные подключения к веб-сокету на вкладке своей сети, чтобы увидеть, что там что-то не так?   -  person Stephan-v    schedule 25.06.2018
comment
@ Stephan-v нет никакой активности на WS (DevTools- ›Network-› WS). Да - перезагружаю страницу   -  person Teretto    schedule 25.06.2018
comment
Возможно, это поможет: github.com/JeffreyWay/laravel-mix/ issues / В данный момент вроде не работает.   -  person Stephan-v    schedule 25.06.2018
comment
@ Stephan-v ЭТО РАБОТАЕТ !!! Спасибо! Вы дадите ответ?   -  person Teretto    schedule 25.06.2018


Ответы (1)


Похоже, что функция замены горячего модуля в настоящее время не работает. Это временный обходной путь, но он не решает таких проблем, как перезагрузка CSS:

https://github.com/JeffreyWay/laravel-mix/issues/1483#issuecomment-366685986

Придется дождаться исправления.

person Stephan-v    schedule 25.06.2018