7

私のアプリ: Node.js、Express、connect-assets と express.static を含むいくつかのミドルウェア。

すべて開発モードのローカル マシン (OSX、Node 0.8) で実行されます (つまり、express.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)

(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)

(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)

重要: これは頻繁に発生しますが、毎回ではないため、コードのバグではないと想定しています。

これは、express.static と開いているファイルの制限が原因である可能性があることがわかったので、実行ulimit -n 10000しましたが、残念ながら効果はありませんでした。

何か案は?これは非常にイライラし始めます。

4

1 に答える 1

5

OK、答えが見つかったようです(少なくとも、言及されている同様の問題を見つけ、修正を試みたところ、落ちなくなりました):

express.staticミドルウェアはチェーンの最後でなければなりません

于 2012-11-14T20:36:24.120 に答える