Node on expressへのGETリクエストがNotFound【Node.js】【express】
【問題】
Node.jsで
//Routes
app.get("/", routes.index);
app.get("/hoge", routes.hoge);
で待ち構えたGETリクエストがブラウザ側でNotFoundになる
【原因】
app.jsからの「routes.hoge」参照先が違った。
間違い
projectDir ┃ ┣ node_modules ┃ ┣ public ┃ ┣ view ┃ ┣ routes ┃ ┣ index.js ┃ ┗ hoge.js ┃ ┗ app.js
app.jsの中身
前略
// Routes
app.get("/", routes.index);
app.get("/hoge", routes.hoge);
後略
routes/index.js
exports.index = function(req, res){
console.log(req);
res.render('index', {
title: "This is Home Page!!"
});
};
routes/hoge.js
exports.hoge = function(req, res){
res.send({
"data" : "This is Data!!"
});
};
とすれば、routesのなかのindexやhogeが呼ばれているのだと思っていた。
【解決】
正しくは以下。
routes.indexとroutes.hogeは「routesの中の(index.jsの中に定義されてる)プロセス名」
projectDir ┃ ┣ node_modules ┃ ┣ public ┃ ┣ view ┃ ┣ routes ┃ ┗ index.js ┃ ┗ app.js
app.jsの中身
前略
// Routes
app.get("/", routes.index);
app.get("/hoge", routes.hoge);
後略
routes/index.js
// reaction to GET "/"
exports.index = function(req, res){
console.log(req);
res.render('index', {
title: "This is Home Page!!"
});
};
// reaction to GET "/hoge"
exports.hoge = function(req, res){
res.send({
"data" : "This is Data!!"
});
};
【雑感】
結構ハマった。
DRY