Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么节点fs.watchFile阻止测试完成?_Javascript_Node.js_Jestjs - Fatal编程技术网

Javascript 为什么节点fs.watchFile阻止测试完成?

Javascript 为什么节点fs.watchFile阻止测试完成?,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,我最近集成了一个Jest测试,以获得一个可配置的网站url和凭据,但现在我的测试还没有完全完成。通常,我从命令行运行npmtest,执行测试,并返回命令行提示符。在测试中使用config js,测试部分完成,但是命令行挂起,我必须按住ctrl+c键才能返回到提示。 我做了一些实验,我很确定这是由于config js使用了fs.watchFile: fs.watchFile(this.pathToConfigFile, function () { self.loadConfig(self.

我最近集成了一个Jest测试,以获得一个可配置的网站url和凭据,但现在我的测试还没有完全完成。通常,我从命令行运行
npmtest
,执行测试,并返回命令行提示符。在测试中使用config js,测试部分完成,但是命令行挂起,我必须按住ctrl+c键才能返回到提示。 我做了一些实验,我很确定这是由于config js使用了fs.watchFile:

fs.watchFile(this.pathToConfigFile, function () {
    self.loadConfig(self.pathToDefaults, self.pathToConfigFile, self.region);
});
当我把这些行注释掉时,一切正常。 我试着用fs.watch来代替,但这并不能解决问题。 正如上面所说,我在测试中并没有对配置文件进行任何更改或热重新加载

如果有帮助,下面是测试:

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');
  });
});
下面是配置文件的外观:

module.exports = {
  testing: {
    baseUrl: "http://foo.com"
  }
}
下文对此进行了解释:

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

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

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