为什么Node fs.watchFile保持testing完成?

我最近把config-js整合到Jesttesting中来获得一个可configuration的网站url和凭证,但是现在我的testing没有完全完成。 通常,我从命令行运行npm test ,testing执行,并返回命令行提示符。 用testing中的config-js,testing部分结束,但是命令行只是挂起,我必须按ctrl + c才能回到提示符。 我做了一些实验,我很确定这是由于config-j使用fs.watchFile:

 fs.watchFile(this.pathToConfigFile, function () { self.loadConfig(self.pathToDefaults, self.pathToConfigFile, self.region); }); 

当我注释这些线,一切工作正常。 我已经尝试使用fs.watch,而不是解决它。 就这样说,我实际上并没有在我的testing中做任何改变或热重assembly置文件。

如果有帮助,这里是testing:

 const Config = require('config-js'); let myConfig = new Config('./my.config.js'); describe('config test', function () { it('gets the baseUrl', function() { expect(myConfig.get('testing.baseUrl')).toEqual('http://foo.com'); }); }); 

这里是configuration文件的样子:

 module.exports = { testing: { baseUrl: "http://foo.com" } } 

这在fs.watchFile文档中有解释:

persistent <boolean>指示只要正在监视文件,进程是否应该继续运行。 默认值: true

将persistent选项设置为false,以便在所有其他操作完成时允许进程退出:

 fs.watchFile(this.pathToConfigFile, {persistent: false}, function () { self.loadConfig(self.pathToDefaults, self.pathToConfigFile, self.region); })