Grunt消息:致命错误:端口35729已被另一个进程使用

时间:2015-09-02 16:57:51

标签: node.js grunt-contrib-watch

Grunt正在工作。但是将我的网站文件移到一个目录后,坐在root上,grunt停止了工作:

致命错误:另一个进程已在使用端口35729。

在这种情况下,路径是否重要?看看35729端口,我发现Grunt是该端口上唯一运行的进程。我杀了那个进程,确认没有其他进程在35729上运行,然后再次运行grunt,但仍然像以前一样得到同样的致命错误。

虽然我的配置文件没有为grunt改变,因为它正在工作,我想我会尝试使用“npm init”方法创建一个新的package.json,然后再次运行“npm install”并确认它已下载“ node_modules”。我还能尝试什么?

我在Mac OS 10.10.5上运行Node v0.10.33

5 个答案:

答案 0 :(得分:18)

请勿在终端中使用Ctrl + C停止进程。

Ctrl + Z会让它继续运行。

通过sudo lsof -i:35729

查找进程ID

然后通过sudo kill -9 PID

终止进程

重新运行grunt手表

答案 1 :(得分:3)

问题是grunt-contrib-watch的实时重新加载:https://github.com/gruntjs/grunt-contrib-watch/blob/v1.0.0/tasks/lib/livereload.js#L19

如果将livereload选项设置为true,则无法获得两个grunt-watch。通过将livereload选项从livereload设置为除{35}之外的其他值(例如true),可以将其中一个live-reload: 1337选项设置为false或将liverelaod的端口更改为其他内容。

有关详情,请参阅文档:https://github.com/gruntjs/grunt-contrib-watch#optionslivereload

否则,您可以根据需要运行任意数量的grunt进程。

答案 2 :(得分:1)

问题解决了。虽然grunt-cli是全局安装的,但是grunt随本地安装在项目中。因此,当我将我的网站文件移到一个目录中,并从该新位置运行grunt时,我正在有效地启动第二个grunt实例,该实例发现该端口当然已被占用,之前发布的早期grunt实例移动文件。

在我杀死这个过程后,咕噜声没有问题。我无法使用kill -9杀死它,因此我使用Mac的活动监视器来发出" Force Quit"。

答案 3 :(得分:1)

在我的情况下,Grunt watch已经在另一个项目中运行了。所以我适当地更新了Grunt的监视任务,以便在不同的端口上进行实时重载。

 watch: {
        main: {
            options: {
                livereload: 35730,
                livereloadOnError: false,
                spawn: false
            },
            files: [createFolderGlobs(['*.js', '*.less', '*.html']), '!_SpecRunner.html', '!.grunt'],
            tasks: [] //all the tasks are run dynamically during the watch event handler
        }
    }

指定livereload:PORT

答案 4 :(得分:0)

解决方案:

步骤1

以管理员身份运行命令行。然后运行以下提及的命令。在yourPortNumber中输入您的端口号:

netstat -ano | findstr : (yourPortNumber)

enter image description here

步骤2

然后,在标识PID之后执行此命令。

taskkill /PID  (typeyourPIDhere) /

享受编码!