使用Jest测试失败,错误:观察文件更改时出错:EMFILE

时间:2017-01-15 04:12:17

标签: node.js reactjs ecmascript-6 jestjs

我尝试为React.js应用编写测试。 一切都很顺利但是在用Git跟踪目录之后(用它做了一个Git回购)。 测试失败,错误如下



2017-01-15 05:05 node[1278] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
2017-01-15 05:05 node[1278] (FSEvents.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-22)
events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: Error watching file for changes: EMFILE
    at exports._errnoException (util.js:1022:11)
    at FSEvent.FSWatcher._handle.onchange (fs.js:1406:11)




我确信这是因为.git目录,因为当我删除.git目录时,它运行时没有错误。 似乎在观看文件时发生异常。 我的开发环境是MacOS 10.12.2和节点6.9.4。 我该如何解决这个问题?

6 个答案:

答案 0 :(得分:14)

哦,经过几个小时的努力,我将回答我的问题 最佳解决方案是安装最新版本的Watchman 旧版本的Watchman导致fsevents模块抛出异常。

安装watchman后,您可以选择运行sudo chown -R $(whoami):staff ~/Library/LaunchAgents来授予权限。

答案 1 :(得分:1)

我遇到了相同的问题,升级watchman并不能解决我的问题。 阅读Jest的文档,您会发现有一个禁用使用watchman的选项。因此,我猜想watchman不是必需的。

此问题的解决方法是使用npm install --save-dev jest@latest将Jest升级到最新版本。

答案 2 :(得分:0)

对我来说这是一个许可问题,当你用自制软件安装守望者时说你应该尝试使用brew postinstall守望者。 执行此操作时,您将注意到权限错误。 Error: Permission denied - /usr/local/var/run/watchman sudo chown -R "$USER":admin /usr/local/var/run

将解决权限问题

brew postinstall watchman 

将起作用

答案 3 :(得分:0)

Unable to Start Firefox Using the Legacy Driver on a 3.5.3 Grid描述了解决这个棘手问题的可能方法。

我个人不得不重新安装守望者 - 测试再次顺利进行。

答案 4 :(得分:0)

您安装了值班员吗?我最近有一位同事在我的笔记本电脑中洒水,因此在将项目等迁移到新笔记本电脑后,我遇到了类似的问题。经过一番努力后,我意识到我只需要运行brew install watchman,前提是您当然是自制的。

答案 5 :(得分:0)

我遇到了与上述类似的问题,并且在看到注释后,我尝试通过运行brew install watchman来安装watchman,但是它建议升级到最新版本,并且我执行了相同的操作。这解决了我的问题,现在我可以使用npm test开玩笑地运行我的测试。谢谢你们