2017-03-24 24 views
0

私はNode.jsのフラッシュメッセージを設定するための正しい方法は何か知っている必要があり 、Javaスクリプトに初心者I'am、EJSの枠組みの中でnodejsアプリを持っているExpress.jsにFlashメッセージを表示する最良の方法は何ですか?

下記の私のコードは私にエラーをスローします、次のように:

0123:

C:\Users\sad\Desktop\Node Application\routes\users.js:57 
 
     req.flash('error_mesg', 'A User with this name already exisit !!') 
 
     ^
 

 
TypeError: Cannot read property 'flash' of null 
 
    at Request._callback (C:\Users\as\Desktop\Node Application\routes\users.js:57:10) 
 
    at Request.self.callback (C:\Users\sa\Desktop\Node Application\node_modules\request\request.js:188:22) 
 
    at emitTwo (events.js:106:13) 
 
    at Request.emit (events.js:191:7) 
 
    at Request.<anonymous> (C:\Users\sd\Desktop\Node Application\node_modules\request\request.js:1171:10) 
 
    at emitOne (events.js:96:13) 
 
    at Request.emit (events.js:188:7) 
 
    at IncomingMessage.<anonymous> (C:\Users\sd\Desktop\Node Application\node_modules\request\request.js:1091:12) 
 
    at IncomingMessage.g (events.js:291:16) 
 
    at emitNone (events.js:91:20) 
 
    at IncomingMessage.emit (events.js:185:7) 
 
    at endReadableNT (_stream_readable.js:974:12) 
 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
 
    at process._tickCallback (internal/process/next_tick.js:98:9)

ここで私はすべてを開始する私のコードは行きます

var flash = require('connect-flash'); 
 

 
// Global VArs 
 
app.use(function (req, res, next) { 
 
    res.locals.success_msg = req.flash('success_msg'); 
 
    res.locals.error_msg = req.flash('error_msg'); 
 
    res.locals.error = req.flash('error'); 
 
    next(); 
 
});

そして、ここで私は実際にそれを適用し、私のコードを行く:

var errors = req.validationErrors(); 
 

 
if(errors){ 
 
    res.render('register' ,{ 
 
    errors:errors 
 
    }) 
 
}else{ 
 

 
    var newUser = {first_name,last_name, role,email,password,company,role} 
 
    request({ 
 
     url: "http://127.0.0.1:8000/v1/dashboard/register/", 
 
     method: "POST", 
 
     json: true, // <--Very important!!! 
 
     body: newUser 
 
    }, function (req, res, err, body){ 
 
     var status = res['statusCode'] 
 
     console.log(typeof(status)); 
 
     if (status = '400'){ 
 
     req.flash('error_mesg', 'A User with this name already exisit !!') 
 

 

 
} 
 

 
    }); 
 
}

あり、質問のこのタイプのいくつかの関連の回答はなく、具体的フラッシュメッセージ。

はここに私のhtml行く:Expressエンドポイントの本体である{{#if error_msg}} <div class="alert alert-danger">{{error_msg}}</div> {{/if}}

答えて

0

あなたが投稿したコードの最後のビットを仮定し、私はあなたがrequestにあなたのコールバックであなたの特急コールバック変数reqresを上書き推測しています。また、requestライブラリコールバックの現在の関数シグネチャではありません。function (error, response, body)でなく、function (req, res, err, body)である必要があります。 、関数のシグネチャを修正ユニークな変数名を使用し、それが動作するはずです:

var errors = req.validationErrors(); 

if(errors){ 
    res.render('register' ,{ 
    errors:errors 
    }) 
}else{ 
    var newUser = {first_name,last_name, role,email,password,company,role} 
    request({ 
     url: "http://127.0.0.1:8000/v1/dashboard/register/", 
     method: "POST", 
     json: true, // <--Very important!!! 
     body: newUser 
    }, function (error, response, body){ 
     var status = response.statusCode; 
     console.log(typeof(status)); 
     if (status = '400'){ 
     req.flash('error_mesg', 'A User with this name already exisit !!') 
    }); 
} 
+0

ねえ@Robそれが正常に動作しますが、いくつかの時間が、それは私に**エラーのようなエラーを与える:。それらが送られた後、ヘッダーを設定することはできません* * –

+0

投稿したものよりも多くのコードがある場合に起こります。これは 'res.send'の変種を複数回呼び出すと発生します。 'res.send'のインスタンスが何度も呼び出されていないことを確認してください。そのエラーは消えるはずです –

関連する問題