Grunt connect (grunt-contrib-connect) livereload: фатальная ошибка: порт 8000 уже используется другим процессом
Я устанавливаю grunt-contrib-watch
, а также grunt-contrib-connect
жить перезагрузить, вот так:
watch: {
options: {
livereload: true,
},
files: ['src/**/*'],
tasks: ['serve']
},
connect: {
server: {
options: {
port: 8000,
base: './dist',
hostname: '0.0.0.0',
protocol: 'http',
livereload: true,
open: true,
}
}
},
Но я получаю эту ошибку, когда Connect пытается перезагрузить:
Running "connect:server" (connect) task Fatal error: Port 8000 is already in use by another process.
Я пробовал несколько разных портов, но у меня была та же проблема.
Я не понимаю, как grunt-contrib-connect
Сервер может конфликтовать с собственным портом.
Как я могу заставить это работать?
2 ответа
Пара требований:
Убедитесь, что вы еще не запускаете localhost 8000 где-то еще. Если у вас два локальных сервера, работающих на одном порту, он не будет работать. (Проверьте другие вкладки в терминале)
Убедитесь, что в вашем html есть следующее (внизу с остальными js)
<script src="//localhost:35729/livereload.js"></script>
а затем попробуйте что-то вроде этого:
connect: {
server: {
options: {
port: 8000,
hostname: 'localhost',
livereload: 35729,
open:{
target: "http://localhost:8000"
}
}
}
},
watch: {
options: {
livereload: true,
},
css: {
files: ['src/**/*'],
options: {
spawn: false,
},
},
html: {
files: ["**/*.html"]
}
},
Тогда вы можете настроить задачу, если вам это не нравится:
grunt.registerTask("server", ["connect", "watch"]); // Type grunt server -- Creates a server and checks for any changes in the html/css
Оказывается, serve
Задача заключалась в том, где я запускал сервер, поэтому он пытался запустить другой сервер каждый раз, когда он перезагружался. Я переключил это на dev
задача, при которой сайт был перекомпилирован, но сервер не запускается.
Возможно, другой случай, но у меня было точно такое же сообщение об ошибке, независимо от того, какой номер порта я установил в своем файле grunt. Оказалось, что проблема связана с тем, что у меня номер порта был определен как строка, а не как число.