当mongod进程运行时,Gulp监视任务会抛出EBUSY错误

时间:2016-04-14 09:31:41

标签: javascript node.js mongodb gulp watch

我在寻找类似的问题时花了好几个小时试图解决这个问题,但没有任何运气,所以我得出结论,唯一要做的就是在这里发一个问题。

我正在开发一个Web应用程序的后端,我使用MongoDB进行数据持久化。我使用Gulp并有一个监视js文件更改的监视任务。我也使用browsersync,所以每当我在终端中运行gulp时,Web应用程序将自动加载到浏览器中。在我运行gulp之前,我使用" mongod --dbpath"启动mongod进程。命令。到目前为止这么好,没有问题。

但是当我运行gulp时,监视任务会抛出EBUSY错误:

错误:EBUSY:资源繁忙或已锁定,scandir' H:\ source \ app \ server \ db \ mongoDbDir \ mongod.lock'

这是我的一项任务:

gulp.task('watch:server', ['server:start'], function () {
var config = require('../../../config')().watch.server;

console.log('CALLING GULP WATCH');
gulp.watch(config.scripts, ['server:restart']); // throws the error

});

config.scripts只引用某些文件夹中的js文件(包括mongo db路径目录,即使这里没有js文件)。正在运行的其他任务是:

    // run server
gulp.task('server:start', ['build:server'], function () {
    var config = require('../../../config')().entrypoint.server;
    server.listen({path: config.source, execArgv: ['--debug=5859']});
});

    // restart server if entrypoint changed
gulp.task('server:restart', ['typescript:server'], function () {
    server.restart();
});

"服务器"这里使用的是gulp-develop-server模块中的Node Js模块。我得到的错误显示在这张图片上:

Error shown in WebStorm Ide's terminal when running gulp

我确实发现了这个: Grunt Serve watch throws EBUSY warning over mongod.lock

这适用于Grunt,但是我试图在监视任务中忽略我的MongoDB的路径并且它没有帮助。

我真的被困在这里,只要出现此错误,我就无法使用网络应用,因为开发服务器不会响应任何内容。

任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

好吧,我的一个队友实际上解决了这个问题。错误是我在我的源代码中有我的数据库路径,gulp正在观看。所以将mongo db移动到默认的C:\ data \ db,然后只运行" mongod"没有dbpath是解决方案!