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
答案 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)