来自Node.js的"管道中未处理的流错误"

Gua*_*ard 7 sockets node.js express

我的应用程序:Node.js,Express,一些中间件,包括connect-assets和express.static.

全部在开发模式下运行在本地机器(OSX,Node 0.8)上(因此表达式.static).

可能很重要的细节:我最近使整个应用程序通过HTTPS工作(必要时从HTTP重定向),而在开发时我使用自我证书(当然在我的浏览器中启用).

现在,该应用程序经常失败的堆栈跟踪:

(1)

stream.js:81
  throw er; // Unhandled stream error in pipe.
        ^
Error: write EPIPE
    at errnoException (net.js:769:11)
    at Object.afterWrite (net.js:593:19)
Run Code Online (Sandbox Code Playgroud)

(2)

stream.js:81
  throw er; // Unhandled stream error in pipe.
        ^
Error: socket hang up
    at SecurePair.error (tls.js:948:15)
    at EncryptedStream.CryptoStream._done (tls.js:432:17)
    at EncryptedStream.CryptoStream._pull (tls.js:577:12)
    at SecurePair.cycle (tls.js:866:20)
    at EncryptedStream.CryptoStream.end (tls.js:405:13)
    at Socket.onend (stream.js:66:10)
    at Socket.EventEmitter.emit (events.js:126:20)
    at TCP.onread (net.js:417:51)
Run Code Online (Sandbox Code Playgroud)

(3)

stream.js:81
  throw er; // Unhandled stream error in pipe.
        ^
Error: socket hang up
    at createHangUpError (http.js:1264:15)
    at CleartextStream.socketCloseListener (http.js:1315:23)
    at CleartextStream.EventEmitter.emit (events.js:126:20)
    at SecurePair.destroy (tls.js:938:22)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)
Run Code Online (Sandbox Code Playgroud)

重要提示:这种情况经常发生,但不是每次都发生,所以我认为这不是我代码中的错误.

我发现这可能是由于express.static和open文件限制所以我跑了ulimit -n 10000- 不幸的是没有效果.

有任何想法吗?这开始非常令人沮丧.

Gua*_*ard 5

好吧,看起来我找到了答案(至少我发现了一个类似的问题,尝试了他们的修复,它停止了下降):

express.static中间件必须是最后一个链