Nodejs実戦双色(by趙坤など)第一章Express+MongoDB構築ブログの誤り
4717 ワード
先日『nodejs実戦』という本を買いましたが、本の中で紹介されている記号の間違いなどは言いませんでした.
第一章では、今まで私が踏んだ穴は…
1.page 30
チュートリアルによると、左側のナビゲーションロゴの欄をクリックすると、次のエラーが…
ReferenceErrer:/Users/apple/Dockments/exercise/node/blog/views/logine.ejs:14 12| 13|user is not defined at eval(eval at(/Users/apple/Dockments/exercise/node/blog/nodemoodules/ejs/lib/ejs.js:464:12)、:15:12 at eval(eval at(/Users/apple/Dockments/exercise/node/blog/nodemoodules/ejs/lib/ejs.js:464:12)、:40:9 at returnedFn(/Users/apple/Dockments/exercise/node/blog/nodemumodules/ejs/lib/ejs/ejs.js:493:17) at View.exports.rendefile[as engine](/Users/apple/Dockments/exercise/node/blog/nodemoodules/ejs/lib/ejs.js:350:31) at View.render(/Users/apple/Dockments/exercise/node/blog/nodeumodules/express/lib/view.js:126:8) at tryRender(/Users/apple/Dcuments/exercise/node/blog/nodemoodules/express/lib/appliation.js:639:10) at EventEmitter.render(/Users/apple/Dockments/exercise/node/blog/nodemoodules/express/lib/appliation.js:591:3) at ServerResonse.render(/Users/apple/Dockments/exercise/node/blog/nodemoodules/express/lib/reponse.js:961:7) at/Users/apple/Dockments/exercise/node/blog/routes/index.js:66:9 at Layer.handle[as handlegurequest](/Users/apple/Doccuments/exercise/node/blog/nodemoodules/express/lib/router/layer.js:95)GET/login 500 9.732 ms-1467
ビルの主人は長い間考えました.原因はindex.jsの中にあります.エラーを報告したuser is not defined(その後のsuccess、error未定義エラーを含む)は、ejsテンプレートのuser(またはsuccess、error)がres.render()に定義されていないことを説明します.だから、ap.get('/login',function(.)の中で定義をもう一度行います.内容は以下に変更します.
2.page 31
ログインとログイン応答…コードは最初にパスワードを生成するmd 5の値があります.本の通りにコード化します.ログイン時にパスワードが間違っています.ビルの主人はコンソールで印刷して見にきました.
新しいタイプのnodejsとして、いつも様々な低レベルの敷居に手を伸ばします.これからもっと強くなりたいです.自分で独立して問題を解決できます.
私が踏んだ穴を探し続けます.見つけたらまた書きます.
第一章では、今まで私が踏んだ穴は…
1.page 30
チュートリアルによると、左側のナビゲーションロゴの欄をクリックすると、次のエラーが…
ReferenceErrer:/Users/apple/Dockments/exercise/node/blog/views/logine.ejs:14 12| 13|user is not defined at eval(eval at(/Users/apple/Dockments/exercise/node/blog/nodemoodules/ejs/lib/ejs.js:464:12)、:15:12 at eval(eval at(/Users/apple/Dockments/exercise/node/blog/nodemoodules/ejs/lib/ejs.js:464:12)、:40:9 at returnedFn(/Users/apple/Dockments/exercise/node/blog/nodemumodules/ejs/lib/ejs/ejs.js:493:17) at View.exports.rendefile[as engine](/Users/apple/Dockments/exercise/node/blog/nodemoodules/ejs/lib/ejs.js:350:31) at View.render(/Users/apple/Dockments/exercise/node/blog/nodeumodules/express/lib/view.js:126:8) at tryRender(/Users/apple/Dcuments/exercise/node/blog/nodemoodules/express/lib/appliation.js:639:10) at EventEmitter.render(/Users/apple/Dockments/exercise/node/blog/nodemoodules/express/lib/appliation.js:591:3) at ServerResonse.render(/Users/apple/Dockments/exercise/node/blog/nodemoodules/express/lib/reponse.js:961:7) at/Users/apple/Dockments/exercise/node/blog/routes/index.js:66:9 at Layer.handle[as handlegurequest](/Users/apple/Doccuments/exercise/node/blog/nodemoodules/express/lib/router/layer.js:95)GET/login 500 9.732 ms-1467
ビルの主人は長い間考えました.原因はindex.jsの中にあります.エラーを報告したuser is not defined(その後のsuccess、error未定義エラーを含む)は、ejsテンプレートのuser(またはsuccess、error)がres.render()に定義されていないことを説明します.だから、ap.get('/login',function(.)の中で定義をもう一度行います.内容は以下に変更します.
app.get('/login',function (req, res) {
res.render('login', {
title: ' ',
user: req.session.user,
success: req.flash('success').toString(),
error: req.flash('error').toString()
});
});
これは訪問/login時報の間違いの原因で、本のソースコードの中でindex.jsの中でap.get('/login')が対応する部分を変えることを注意することを忘れたためです.2.page 31
ログインとログイン応答…コードは最初にパスワードを生成するmd 5の値があります.本の通りにコード化します.ログイン時にパスワードが間違っています.ビルの主人はコンソールで印刷して見にきました.
//
if (user.password != password) {
req.flash('error', ' !');
return res.redirect('/login');
}
ここの問題はもちろん入力されたパスワードとデータベースの中に保存されているものとは違います.本のソースコードは間違っています.var md5 = crypto.createHash('md5'),
password = md5.update(req.body.password).digest('hex');
ここでmd 5を生成するのは何の役にも立たないです.比較するのはユーザ登録時に入力されたパスワードとデータベースに保存されているパスワードです.var password = req.body.password;
後は正常に運行します.新しいタイプのnodejsとして、いつも様々な低レベルの敷居に手を伸ばします.これからもっと強くなりたいです.自分で独立して問題を解決できます.
私が踏んだ穴を探し続けます.見つけたらまた書きます.