강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

서기현님의 프로필 이미지
서기현

작성한 질문수

Vue로 Nodebird SNS 만들기

4-14. 미들웨어와 exports

미들웨어 프론트로 알려주는 방법

작성

·

656

1

안녕하세요
미들웨어를 사용중입니다.
문제가 있는경우 res.status.send로 값을 전달하는데
이렇게 전달하는 값들을 프론트에서 alert이나 팝업으로 띄울 수 있을까요?
예를들어 포스트에 isloggedin을 넣게 되면 401에러와 함께 포스트가 불러오지 않는데 유저들은 그걸 알 수 없으니 미들웨어에서 res.send값 정도는 경고창이나 팝업으로 띄우고 싶습니다.

퀴즈

프론트엔드와 백엔드 서버를 분리하는 주된 이유가 무엇일까요?

단일 서버 성능 향상

확장이 용이하고 자원 관리가 효율적입니다.

모든 최신 프레임워크의 요구사항입니다.

서로 다른 언어를 사용할 수 있게 합니다.

답변 1

2

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

에러가 있는 경우 에러 코드같은 것을 프론트에 전달하시고, 프론트에서는 그 코드를 보면 alert를 띄우세요.

서기현님의 프로필 이미지
서기현
질문자

답변 감사합니다.

에러가 있는 경우 에러 코드같은 것을 프론트에 전달하시고

- 이해 했습니다.

프론트에서는 그 코드를 보면 alert를 띄우세요.

- send로 전달하면 네트워크에 프리뷰에만 나오는데 이걸 어떻게 보고 띄우는지 모르겠습니다.

키워드라도 주시면 잘 찾아보고 진행 하겠습니다.

감사합니다.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

에러 응답의 경우에도 응답에서 데이터를 꺼내올 수 있습니다. axios의 경우 err.response.data에 있습니다. send에 적은 게 그대로 들어있어요.

서기현님의 프로필 이미지
서기현
질문자

감사합니다. 

axios의 경우 err.response.data 알려주신 방법으로 alert을 띄웠습니다.

nuxt기능중 하나인 middleware폴더를 만든 후 안에 js파일을 생성하고 아래와 같이 진행한다고 하였을때는 alert is not defined가 나옵니다.

middleware 폴더 속 userRole.js

export default ({ storeredirect }) => {
  if (!store.state.users.me.user_roles.role) {
    alert("등급이 안됩니다");
    redirect("/");
  }
};

제어할 페이지 속

middleware: ["userRole"],

이렇게 진행하면 alert is not defined 가 나옵니다.

nuxt.config에서 mode를 spa로 변경하니 alert은 나왔지만 session로그인 유지부분에서 문제가 생겼습니다.

alert를 사용하려면 어떤 방법이 있을까요?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

alert는 브라우저에만 존재하는데 ssr 시 서버에서 저 코드가 실행되서 그렇습니다.

if (typeof alert !== 'undefined') { alert('등급이 안됩니다'); }

를 쓰시면 되는데 좋은 방법은 아닙니다. 좋은 방법은

redirect('/?alert=CODE') 이런식으로 주소 뒤에 코드를 붙인 뒤

프론트에서 주소에 alert 코드가 존재하는 경우 에러 메시지를 띄우는 겁니다.

서기현님의 프로필 이미지
서기현

작성한 질문수

질문하기