【问题标题】:Error: EMFILE: too many open files on win错误:EMFILE:win 上打开的文件太多
【发布时间】:2019-02-23 10:01:12
【问题描述】:

我正在构建一个类似 Vscode 的应用程序,并且我编写了自己的 Vscode 扩展并将其放入源代码中,它工作正常。但是在我使用 gulp 命令打包我的应用程序后,这是错误的:(在 mac OS 上它有效)

[17:07:59] Finished 'optimize-vscode' after 23 s
[17:07:59] Starting 'vscode-win32-x64'...
[17:08:31] Downloading extension: ms-vscode.node-debug2@1.25.6 ...
[17:08:32] Downloading extension: ms-vscode.node-debug@1.25.4 ...

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

Error: EMFILE: too many open files, open 'C:\Gitlab-Runner\builds\251c7da1\0\Haochen_super\IDE\extensions\hap-transformer\node_modules\qa-transformer\build\core\transformers\style\rules\declaration\dimension.js' 

有人可以帮我解决这个问题吗????

【问题讨论】:

  • 看起来你在那个盒子上打开的文件太多了。您是否尝试过使用 Process Monitor 查看打开文件的数量? docs.microsoft.com/en-us/sysinternals/downloads/procmon
  • 我改用了 Process explorer,发现 node.js 在后台同时打开了 6000 多个文件。并感谢您的回答!

标签: node.js visual-studio-code electron


【解决方案1】:

不确定这是否是同一个问题,如果是 - 投票我的答案,如果不是 - 继续搜索。

使用 Visual Studio 或 Visual Code 进行调试时 - Visual Studio 将调试会话日志保存在文件 %TEMP%\vscode-node-debug2.txt 中。

确实是很长的日志文本,很难阅读,而且很难理解出了什么问题。但就我而言,我发现了以下日志条目(接近日志末尾):

↠From target: {"method":"Runtime.consoleAPICalled","params":{"type":"error","args":[{"type":"string","value":"WebpackO
ptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does
not match the API schema.\n - configuration.context: The provided value \"D:\\\\!deleteme!\\\\VuejsApp1\\\\VuejsApp1\" co
ntains exclamation mark (!) which is not allowed because it's reserved for loader syntax.\n   -\u003E The base directory

还有很多EMFILE日志条目,但它们不是失败的根本原因。

就我而言,根本原因是我在路径中使用了特殊字符 - D:\!deleteme!\VueJsApp - 我通过简单地创建不带感叹号的目录来修复它。

我仍然无法调试 VueJsApp - 我怀疑是由于 .vue 到 .js 的转换,但正常的 javascript 仍然可以调试。

【讨论】:

    猜你喜欢
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2010-12-07
    • 1970-01-01
    • 2014-06-23
    • 2016-03-17
    • 1970-01-01
    相关资源
    最近更新 更多