質問編集履歴

1 ディレクトリ追加

Abenosan

Abenosan score 23

2018/08/29 12:04  投稿

Node.js expressリダイレクトができない
・問題
ログイン判定をして、違うページに飛ばしたいのですが、リダイレクトができない問題に直面しています。
・したいこと
`res.redirect('/admin');`でadmin.jsを動かし、表示させたいです。
こちらがソースコードの一部になります
app.js一部
```ここに言語を入力
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require('express-session');
var usersRouter = require('./routes/users');
var login = require('./routes/login');
var admin = require('./routes/admin');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({
 secret: 'keyboard cat',
 resave: false,
 seveUniitialized: true
}));
app.use('/', login);
app.use('/users', usersRouter);
app.use('/admin',admin);
```
login.js
```ここに言語を入力
var express = require('express');
var router = express.Router();
var sqlite3 = require('sqlite3');
// データベースオブジェクト取得
var db = new sqlite3.Database('ChieproDB.sqlite3');
/* GET home pa0ge. */
router.get('/', function(req, res, next) {
 res.render('login', {
   title: 'ChiePro管理システム',
   message : 'ログインpackageに接続'
  });
});
router.post('/',function(req,res,nxet){
 var id = req.body.id;
 var pass = req.body.pass;
 var query = `select * from account where admin_id = "${id}" AND admin_pass = "${pass}"`;
 db.all(query,function(err,rows){
   if(rows.length){
     console.log('一致');
     res.redirect('/admin');     //ここで admin 飛ばしてます。  ※エラー発生 Not Found 404
   }else{
     res.render('login',{
       title: 'ChiePro管理システム',
       message : 'IDかパスワードが間違っています。'
     });
   }
 });
});
module.exports = router;
```
---
飛ばしたい先 ejs js 
ファイル名 routes の中 「admin.js」
```ここに言語を入力
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/admin', function(req, res, next){
 res.renber('admin', {
     title: '管理画面',
     message: '成功しました'
 });
});
module.exports = router;
```
ファイル名 viewsの中 「admin.ejs」
```ここに言語を入力
<!DOCTYPE html>
<html>
 <head>
   <title>管理画面</title>
   <link rel='stylesheet' href='/stylesheets/style.css' />
   <!-- bootstrap4 -->
   <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
   <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
   <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
 </head>
 <body>
   <div class="conteiner bg-light col-md-5 p-5 shadow-lg rounded mx-auto">
     <h1 class="text-center"><%= title %></h1>
     <h6 class="text-center"><%= message %></h6>
   </div>
 </body>
</html>
```
error コード
```ここに言語を入力
Not Found
404
NotFoundError: Not Found
   at C:\Users\*******\Desktop\atm\app.js:36:8
   at Layer.handle [as handle_request] (C:\Users\*******\Desktop\atm\node_modules\express\lib\router\layer.js:95:5)
   at trim_prefix (C:\Users\*******\Desktop\atm\node_modules\express\lib\router\index.js:317:13)
   at C:\Users\*******\Desktop\atm\node_modules\express\lib\router\index.js:284:7
   at Function.process_params (C:\Users\*******\Desktop\atm\node_modules\express\lib\router\index.js:335:12)
   at next (C:\Users\*******\Desktop\atm\node_modules\express\lib\router\index.js:275:10)
   at C:\Users\*******\Desktop\atm\node_modules\express\lib\router\index.js:635:15
   at next (C:\Users\*******\Desktop\atm\node_modules\express\lib\router\index.js:260:14)
   at Function.handle (C:\Users\*******\Desktop\atm\node_modules\express\lib\router\index.js:174:3)
   at router (C:\Users\*******\Desktop\atm\node_modules\express\lib\router\index.js:47:12)
```
```
]![イメージ説明](1bb56c8363b1223f79195e7838d99e76.png)
  • JavaScript

    24415 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Node.js

    2840 questions

    Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

  • Express

    369 questions

    ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る