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

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

작성한 질문수

Vue로 Nodebird SNS 만들기

4-14. 미들웨어와 exports

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

작성

·

604

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 코드가 존재하는 경우 에러 메시지를 띄우는 겁니다.

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

작성한 질문수

질문하기