使用 Jest 进行测试失败并出现错误:查看文件以进行更改时出错:EMFILE
Posted
技术标签:
【中文标题】使用 Jest 进行测试失败并出现错误:查看文件以进行更改时出错:EMFILE【英文标题】:Testing with Jest failed with Error: Error watching file for changes: EMFILE 【发布时间】:2017-05-30 04:35:53 【问题描述】:我尝试为 React.js 应用程序编写测试。 一切都很顺利,但是在用 Git 跟踪目录之后(用它做了一个 Git repo)。 测试失败并出现以下错误
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。
我该如何解决这个问题?
【问题讨论】:
我尝试将 ulimit 设置为一个很大的数字但没有效果。 查看***.com/a/33656154/893780 ***.com/a/33656154/893780 对我不起作用。 我认为应该有一个明确的解决方案让它不看'.git'目录。 查看github.com/facebook/jest/issues?q=is%3Aissue+emfile+is%3Aclosed:D 【参考方案1】:哦,经过数小时的努力,我将回答我的问题。
最好的解决方案是安装最新版本的Watchman。
老版本的Watchman导致fsevents
模块抛出异常。
安装watchman
后,可以选择运行sudo chown -R $(whoami):staff ~/Library/LaunchAgents
来授予权限。
【讨论】:
嗨,我们也遇到了同样的问题,但是守望者修复没有奏效...介意看看这里吗? ***.com/questions/44596052/… 它也没有为我解决问题。【参考方案2】:我遇到了同样的问题,升级watchman
并没有为我解决这个问题。
阅读 Jest 的文档,您会发现有一个使用 watchman
禁用的选项。所以我猜watchman
是没有必要的。
解决此问题的方法是使用 npm install --save-dev jest@latest
将 Jest 升级到最新版本。
【讨论】:
【参考方案3】:你安装了守望者吗?我最近有一位同事在我的笔记本电脑上洒了水,所以在将项目等迁移到新笔记本电脑后,我遇到了类似的问题。经过一番摸索后,我意识到我只需要运行brew install watchman
,当然前提是你有自制软件。
【讨论】:
【参考方案4】:对我来说这是一个权限问题,当您使用 homebrew 安装 watchman 时,您应该尝试 brew postinstall watchman。
执行此操作时,您会注意到权限错误。
Error: Permission denied - /usr/local/var/run/watchman
sudo chown -R "$USER":admin /usr/local/var/run
然后会解决权限问题
brew postinstall watchman
会起作用
【讨论】:
【参考方案5】:This section of create-react-app's README 描述了处理这个令人讨厌的问题的可能方法。
我个人不得不重新安装 watchman - 测试再次顺利运行 ?。
【讨论】:
【参考方案6】:我遇到了与上述类似的问题,在看到 cmets 后,我尝试通过运行 brew install watchman 来安装 watchman,但它建议升级到最新版本,我也这样做了。这解决了我的问题,我现在可以使用 npm test 开玩笑地运行我的测试。谢谢大家
【讨论】:
这是否意味着可以独立于以前的答案?或者更多只是“感谢”评论(应该作为评论,而不是答案) 请不要添加 "thanks" 作为答案。它们实际上并没有提供问题的答案,并且可能被未来的访问者视为噪音。相反,upvote answers 你喜欢。这样,问题的未来访问者将看到对该答案的更高投票数,并且回答者也将获得声誉积分奖励。见Why is voting important。以上是关于使用 Jest 进行测试失败并出现错误:查看文件以进行更改时出错:EMFILE的主要内容,如果未能解决你的问题,请参考以下文章
Jest 测试失败,出现 Unexpected token,expected ";"