1

我正在设置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,
    }
  }
},

但是当连接尝试重新加载时出现此错误:

Running "connect:server" (connect) task
Fatal error: Port 8000 is already in use by another process.

我尝试了几个不同的端口,但遇到了同样的问题。

我不明白grunt-contrib-connect服务器如何与它自己的端口发生冲突。

我怎样才能让它工作?

4

3 回答 3

1

几个要求:

确保您尚未在其他地方启动 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
于 2018-07-31T21:08:20.217 回答
0

事实证明,该serve任务是我启动服务器的地方,所以每次重新加载时它都会尝试启动另一台服务器。我将其切换到dev重新编译站点但不启动服务器的任务。

于 2018-07-31T21:14:47.410 回答
0

可能是不同的情况,但无论我在 gruntfile 中设置哪个端口号,我都会收到完全相同的错误消息。原来问题是由于我将端口号定义为字符串而不是数字。

于 2020-04-24T23:38:58.333 回答