使用 Jest 测试失败并出现错误:查看文件更改时出错:EMFILE

IT技术 node.js reactjs ecmascript-6 jestjs
2021-05-06 21:29:49

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

4个回答

哦,经过几个小时的挣扎,我要回答我的问题。
最好的解决方案是安装最新版本的Watchman
Watchman 的旧版本导致fseventsmodule抛出异常。

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

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

为我解决这个问题的是使用 .js 将 Jest 升级到最新版本npm install --save-dev jest@latest

你安装了守望者吗?我最近有一位同事在我的笔记本电脑上泼水,因此在将项目等迁移到新笔记本电脑后,我遇到了类似的问题。在有点头疼之后我意识到我只需要运行brew install watchman,当然假设你有自制软件。

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

将解决权限问题然后

brew postinstall watchman 

将工作