【问题标题】:Node events.js:292 throw er; // Unhandled 'error' event节点 events.js:292 throw er; // 未处理的“错误”事件
【发布时间】:2020-12-12 13:02:04
【问题描述】:

我正在尝试使用此命令捆绑我的 ios 版本:

react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios

但每次我尝试得到这个错误:

events.js:292
      throw er; // Unhandled 'error' event
      ^

Error: EMFILE: too many open files, watch
    at FSEvent.FSWatcher._handle.onchange (internal/fs/watchers.js:127:28)
Emitted 'error' event on NodeWatcher instance at:
    at NodeWatcher.checkedEmitError (/usr/local/lib/node_modules/react-native/node_modules/sane/src/node_watcher.js:143:12)
    at FSWatcher.emit (events.js:315:20)
    at FSEvent.FSWatcher._handle.onchange (internal/fs/watchers.js:133:12) {
  errno: -24,
  syscall: 'watch',
  code: 'EMFILE',
  filename: null
}

我尝试了以下方法:killnode 命令、安装 watchman、重启机器、删除 node_modules 文件夹和 npm install。到目前为止,还没有任何工作,并且错误一直显示。

【问题讨论】:

  • 我知道 OP 说删除 node_modules 没有用,但我删除了它和 yarn.lock,然后构建正常工作,所以对于任何看到这个的人来说都值得一试

标签: node.js json reactjs


【解决方案1】:

可能只是您需要提高打开文件的限制。

尝试使用ulimit 4096,看看效果如何?

这样,您可以解决问题,而不是解决根本原因。

可能只是您的系统配置太低,无法满足实际的标准 react 构建过程,并且没有任何问题。

您也可以,但不强烈建议也设置无限限制。

ulimit unlimited。如果这样做,建议通过 -S 标志设置软限制:ulimit -S unlimited 以不超过您的内存。

【讨论】:

  • 在终端中输入了 ulimit 4096,然后运行了 bundle 命令,但仍然无效:(
  • 不要只设置ulimit 4096...我不知道这是做什么的,但它确实提高了允许的打开文件描述符的数量。使用ulimit -n [some integer]linuxhint.com/linux_ulimit_command
  • 你是如何使用命令的? ulimit [some integer] 还是 ulimit -n [some integer]?因为它们做不同的事情。
  • 我的错。 @Take-Some-Bytes 是对的。但是,使用 -n,如果金额高于您设置的硬限制,它将不起作用。在终端中运行时,它也仅适用于您当前的终端会话。确保在运行命令的会话中运行它。
  • 您可以通过ulimit -a查看您的用户限制的完整细分
猜你喜欢
  • 2019-08-21
  • 2018-11-19
  • 2018-05-04
  • 1970-01-01
  • 2019-11-10
  • 2018-07-23
  • 2015-03-01
  • 2019-01-27
  • 2017-06-23
相关资源
最近更新 更多