Testing with Jest failed with Error: Error watching file for changes: EMFILE

Testing with Jest failed with Error: Error watching file for changes: EMFILE

我试图为 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和Node 6.9.4。 我该如何解决这个问题?

哦,经过数小时的努力,我将回答我的问题。
最好的解决办法是安装最新版本的 Watchman.
旧版Watchman导致fsevents模块抛出异常

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

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

然后解决权限问题

brew postinstall watchman 

会起作用

This section of create-react-app's README 描述了处理这个棘手问题的可能方法。

我个人不得不重新安装 watchman - 测试再次 运行 顺利。

我 运行 遇到了同样的问题,升级 watchman 并没有为我解决这个问题。 阅读 Jest 的文档,您会发现有一个选项可以禁用 watchman。所以我想 watchman 是没有必要的。

对我来说解决这个问题的方法是使用 npm install --save-dev jest@latest.

将 Jest 升级到最新版本

你有安装watchman吗?我最近有一个同事把水泼到我的笔记本电脑上,所以在将项目等迁移到新笔记本电脑后,我遇到了类似的问题。经过一番摸不着头脑后,我意识到我只需要 运行 brew install watchman,当然前提是你有自制软件。

我遇到了与上述类似的问题,看到评论后,我尝试通过 运行ning brew install watchman 安装 watchman,但它建议升级到最新版本,我也照做了。这解决了我的问题,我现在可以 运行 使用 npm test 开玩笑地测试了。谢谢大家