2017-10-30 4 views
0

Node.jsサーバにフォームを投稿しようとすると、ブラウザクライアント(私の場合はChrome)がレスポンスを送信するまでに(約2分)レンダリングするはずのHTMLを受け取ります。私がPostmanを使って同じ投稿要求をすると、それは即座に起こります。ブラウザクライアントがサーバへのPOSTリクエストを作成するのに時間がかかる

ブラウザからデータを送信しようとすると、ブラウザがPOSTリクエストを読み込んでいる間にPostmanを介してデータを送信すると、ブラウザはHTMLもレンダリングします。私が郵便配達でもリクエストを送っておらず、ただロードさせなければ、ブラウザーは、ERR_EMPTY_RESPOSNEメッセージを表示するまで、faviconにロードスピナーを持ち続けます。

HTML:

<html> 
<head> 
    <script src="javascripts/jquery-3.2.1.js"></script> 
    <script src="javascripts/login.js"></script> 
</head> 
<body> 
    <h1>Login</h1> 
    <form id="login-form" method="post" action="/"> 
     <div> 
      <label for="username">Username:</label> 
      <input type="text" id="username" name="username" /> 
     </div> 
     <div> 
      <label for="password">Password:</label> 
      <input type="text" id="password" name="password" /> 
     </div> 
     <div> 
      <input type="submit" name="submit" id="submit" value="Submit"/> 
     </div> 
    </form> 
</body> 

のNode.js:クライアントがリクエスト2行う場合

router.post('/', function(req, res, next) { 
    console.log("post received"); 
    res.render('songs'); 
}) 
+0

問題がバックエンドにない場合よりも郵便配達員が即座にレンダリングする場合は、フロントエンド部分に焦点を当てる必要があります。login.jsコードを置くことができますか?米国。 –

答えて

0

2分には、Node.jsのサーバーの特定のタイムアウトです2分でサーバーからの応答が得られない場合は、99% サーバーの問題です。私はここにごくわずかなコードを提供して以来、あなたの問題が本当に何であるかを知ることができますが、私はあなたにそのような問題がなぜ起こるのかを知ることができます。

私の経験上、タイムアウトの問題があった人は、resオブジェクトを急いでコールバックの範囲に誤って設定しましたが、後でresと呼んでクライアントにデータを送信できます。これは大きな間違いです。 reqおよびresはミドルウェアまたはルータでのみ呼び出すことができます。アウトスコープ変数に割り当てられている場合は、要求が変更され、変数が変更されるため、そのステータスは変更されます。現在のリクエストは応答を得ません外部変数はデータを送信する前に変更されています。

また、ミドルウェアを定義するときには、next()に電話するのを忘れてしまいます。それは、あなたが泣きたいという単純な間違いです。

あなたの状況に該当しない場合は、ここにコードを追加して実際の問題点を見てみましょう。

関連する問題