여는 글
서브 페이지에서 새로 고침하면 404 뜨는 건 개발 초기에 vue 문제라는 걸 구글링해서 알고 있는 상태였다.
redirect 에러는 회원 가입 페이지를 구현하면서 회원 가입이 완료되면 로그인 페이지로 이동하도록 구현하고 싶었으나 redirect 명령어를 사용하면 404에러가 뜨고 url 창에 직접 경로를 쳐도 404가 뜬다는 걸 알게됐고 메인 페이지로의 이동만 가능했기 때문에 회원 가입 후 메인 페이지로 이동하도록 구현해놓은 상태다.
이번에 새로 고침하면 404뜨는 에러를 고치기 위해서 구글링하다보니 redirect 문제까지 해결할 수 있다는 것을 알았다.
미들웨어 connect-history-api-fallback를 사용하는 것.
구글링하면서 vue 포럼에서 이 미들웨어를 사용하는 것을 추천하길래 사용하려고 시도했더니 해결됐다.
connect-history-api-fallback 사용하기
Node.js에 아래 명령어로 설치한다.
npm install --save connect-history-api-fallback
backend/routes/app.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
const history = require('connect-history-api-fallback'); //여기
var cookieParser = require('cookie-parser');
var logger = require('morgan');
const session = require('express-session');
var indexRouter = require('./routes/index');
var app = express();
// view engine setup
var views = [
path.join(__dirname, 'views')
]
app.set('views', 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('/', indexRouter);
app.use(history()); //여기
app.use(express.static(path.join(__dirname, 'public'))); // 반드시 여기 위에 use 쓸 것!
/*---------후략-----------*/
주석 표시한 곳만 보면 되고 주의해야 할 점은 static 위에 history를 써야한다는 것이다.
처음에 안 되길래 구글링해보니 static이 위에 있어서 안됐던 거였다.
++다음날 확인해보니 / 페이지가 백엔드 페이지로 출력되는 것을 확인하고 프론트엔드 페이지로 나오도록 추가 작성 했다.
backend/routes/index.js
var express = require('express');
var path = require('path'); //추가된 부분
var router = express.Router();
router.use(express.urlencoded({extended:true}));
router.use(express.json())
var User = require('./mongodbuser');
/* GET home page. */
router.get('/', function(req, res, next) {
res.sendFile(path.join(__dirname, '../public', 'index.html')); // 수정된 부분
});
/* 후략 */
닫는 글
이젠 서브페이지 새로고침, url 창에서 주소 입력해도 잘 이동한다.
이제 세션으로 로그인/로그아웃 구현만 남았다.
'포트폴리오(종료) > 올랑올랑 상점 (제품판매사이트) 제작 과정 (완료)' 카테고리의 다른 글
올랑올랑 상점 기능 구현 요약 (0) | 2022.01.20 |
---|---|
[Node.js, Vue.js, Ajax] ::디버깅 실패:: Vue.js alert 넣기 (0) | 2021.10.02 |
[import, Node.js, Vue.js] 결제 구현과 테스트 해보기 (0) | 2021.10.01 |
[Node.js, Vue.js, AWS, MongoDB Compass] 연동하기 (0) | 2021.09.24 |
[Node.js, Vue.js, AWS] 배포하기 (0) | 2021.09.15 |