为什么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); })