当我运行位于/path/to/app中的流星应用程序时,它会正确构建和启动,但大约45秒到1分钟后,它总是会崩溃,并出现类似的错误
=> Started proxy.
=> Started MongoDB.
=> Started your app.
=> App running at: http://localhost:3000/
/Users/alex/.meteor/packages/meteor-tool/.1.1.10.1j76dru++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:278
throw(ex);
^
Error: UNKNOWN, readdir '/path/to/node_modules/sjcl/jsdoc_toolkit-2.3.3-beta/app/test'
at Object.Future.wait (/Users/alex/.meteor/packages/meteor-tool/.1.1.10.1j76dru++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:398:15)
at /tools/fs/files.js:1331:28
at Object.wrapper (/tools/fs/files.js:1334:20)
at readDirectory (/tools/fs/watch.js:265:26)
at Watcher._fireIfDirectoryChanged (/tools/fs/watch.js:409:23)
at /tools/fs/watch.js:670:12
at Array.forEach (native)
at Function._.each._.forEach (/Users/alex/.meteor/packages/meteor-tool/.1.1.10.1j76dru++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/underscore/underscore.js:79:11)
at Watcher._checkDirectories (/tools/fs/watch.js:659:7)
at new Watcher (/tools/fs/watch.js:356:10)
at [object Object]._.extend._runOnce (/tools/runners/run-app.js:746:23)
at [object Object]._.extend._fiber (/tools/runners/run-app.js:858:28)
at /tools/runners/run-app.js:396:12
- - - - -
假设我尝试多次重现这个错误,我将在future.js:278和Object.future.wait的398:15中始终看到相同的错误,但试图由readdir读取的目录将是一些不同的node_modules包。我拥有该项目的所有正确权限。
知道在这个问题之前,我遇到了一个打开太多文件的问题(EMFILE错误),这可能会很有用,我在我的bashrc文件中添加了这一行,以增加进程可能打开的文件数量
sudo launchctl limit maxfiles 16384 16384 && ulimit -n 16384
它消除了EMFILE错误,但现在我陷入了这个未知错误。
此外,我已经尝试在这里解决
https://github.com/meteor/meteor/issues/4660
使用"sudo清除",但没有起作用。这个问题的任何解决方案。
找到并杀死Meteor的任何其他运行实例似乎为我解决了这个问题:
ps -x | grep meteor
# find [pid] of meteor instance
kill [pid]
运行sudo purge
。如果不起作用,请重新启动mac,然后再次运行流星。它对我有效。
我发现将maxfiles
限制提高得更高可以解决问题。
例如:
sudo launchctl limit maxfiles 100000 100000