node.jsでディレクトリに含まれるファイル一覧を取得しようとした時に、次のようなエラーが発生した。
{ Error: ENFILE: file table overflow, scandir '/Users/xxx/Documents/prj/node_modules/tar-pack/test/fixtures/to-pack' errno: -23, code: 'ENFILE', syscall: 'scandir', path: '/Users/xxx/Documents/prj/node_modules/tar-pack/test/fixtures/to-pack' }
原因は、実装方法に問題があるわけではなく、Mac OS X Sierraの制約であった様子。解決方法は次のコマンドをコンソールで実行すれば良い。
$ echo kern.maxfiles=65536 | sudo tee -a /etc/sysctl.conf $ echo kern.maxfilesperproc=65536 | sudo tee -a /etc/sysctl.conf $ sudo sysctl -w kern.maxfiles=65536 $ sudo sysctl -w kern.maxfilesperproc=65536 $ ulimit -n 65536
このサイトを参考にしました。