我在寻找类似的问题时花了好几个小时试图解决这个问题,但没有任何运气,所以我得出结论,唯一要做的就是在这里发一个问题。
我正在开发一个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的路径并且它没有帮助。
我真的被困在这里,只要出现此错误,我就无法使用网络应用,因为开发服务器不会响应任何内容。
任何人都可以帮我这个吗?
答案 0 :(得分:1)
好吧,我的一个队友实际上解决了这个问题。错误是我在我的源代码中有我的数据库路径,gulp正在观看。所以将mongo db移动到默认的C:\ data \ db,然后只运行" mongod"没有dbpath是解决方案!