2017-10-30 2 views
0

Gmail 계정을 사용하여 사용자를 로깅하는 작은 앱을 만들고 있습니다. 응용 프로그램에 성공적으로 사용자 로그인 오류를주는 다른 페이지로가 리디렉션되는 경우 문제는 (404)노드 js (Express) express.static가 작동하지 않습니다.

enter image description here

그리고 EJS 파일보기 폴더에있는 것처럼 Directory 계층 구조는

I 때 구글 계정으로 사용자 로그인 시작 페이지로 리디렉션되어야하지만 오류 페이지를 찾을 수 없습니다.

기본 페이지 코드가

"use strict" 
    const path=require("path"); 
    const express=require("express"); 
    const session=require("express-session"); 
    const bodyParser=require("body-parser"); 
    const passport = require("passport"); 
    const db =require("./DbConnection/findCollection"); 
    const auth = require("./auth"); 
    const compression = require("compression"); 
    var appDir = path.dirname(require.main.filename); 

    const app=express(); 
    app.set("view engine", "ejs"); 

    app.use(bodyParser.urlencoded({extended:true})); 

    //enable gzip 
    app.use(compression()); 
    //enable session storage 
    //TODO: add connect-mongo as session storage 
    app.use(session({ 
     resave: false, 
     saveUninitialized: false, 
     secret:"keyboardcat",//config.get("SECRET"), 
     signed: true 
    })); 
    app.all("*", (req, res, next) => { 
     console.log("request: " + req.url); 
     next(); 
    }); 
    //OAuth 
    app.use(passport.initialize()); 
    app.use(passport.session()); 
    app.use(auth.router); 

    function respond(req, res) { 
     return function (err, data) { 
      if (err) { 
       return res.status(400).send(err); 
      } 

      res.header("Content-Type", "application/json"); 
      res.send(data);//JSON.stringify(data, null, 2)); 
     }; 
    } 

    function render(req,res,file,data){ 
     res.render("master.ejs", { content: file, req: req, data: data}); 

    } 

    app.get("/",(req,res,next)=>{ 
     if(req.user){ 
     console.log("Path is "+appDir); 
    // res.redirect("/views/welcome"); 
     res.redirect("/welcome"); 
     } 
     else{ 
      console.log("Path is "+appDir); 
     render(req, res,"login.ejs");} 
    }); 


    app.use("/views", express.static(__dirname + '/views')) 

    app.all("*", (req, res) => { 
     res.status(404).send("Page was not found, sorry!"); 
    }); 

    var server = app.listen(process.env.PORT || 3000, process.env.IP || "0.0.0.0",() => { 
     var address = server.address(); 
     console.log(`[${(new Date().toString()).substr(0, (new Date().toString()).indexOf(" ("))}] Server started on http://${address.address}:${address.port}`); 
    }); 

답변

0

만들려면 아래의 뷰 파일을로드 할 명시 할 수있다, 당신은 그것의 현재 작업

app.set('views', path.join(__dirname, 'views')); 

대신

app.use('/views', express.static(__dirname + '/views')); 
+0

감사의 놓아야합니다. – user3226819

+0

예! 도와 줄 수있어서 기뻐. – Marprin

관련 문제