프로젝트가 크지 않으면 웹팩 컨피그(webpack.config.js)를 분리할 이유가 별로 없습니다. 저도 계속 'if'문으로 분리해서 쓰고 있었는데요..... 프로젝트에 이것저것 설정할 게 많아지니 개발(development) 모드와 프로덕션(production) 모드 간의 차이가 많아져서 변수로 관리하는 것이 힘들어졌습니다. 1. 컨피그(webpack.config.js) 분리하기 이럴 때 필요한 것이 컨피그를 분리하는 것입니다. 구조는 다음과 같습니다. 1) 공통으로 사용할 공통 컨피그(webpack.common.js) 파일을 만들고 공통으로 사용할 설정을 넣어줍니다. 2) 개발 모드에 사용할 컨피그(webpack.dev.js)를 만들고 개발 모드에서만 사용할 설정을 넣어줍니다. 3) 배포 모드에 사..
1. 증상 어느 날 갑자기 빈 솔루션(empty solution) 템플릿이 사라졌습니다. 아무리 검색해도 안 나와서 해당 카테고리를 확인했더니..... 이런 결과가... '빈 솔루션'은 비주얼 스튜디오의 가장 기본 템플릿이라 뭐 설치할 것도 없이 표시가 돼야 정상인데 무슨 일인지 모르겠네요. 2. 해결 방법 '개별 구성 요소'에서 '.NET Framework 프로젝트 및 항목 템플릿'이 꺼져있으면 '빈 솔루션'이 표시되지 않을 수 있다고 합니다. 도구 > 도구 및 기능 가져오기 > 수정 > 개별 구성 요소 에서 '.NET Framework 프로젝트 및 항목 템플릿'을 체크하고 수정해줍니다. 설치가 끝나면 다시 잘 표시됩니다. 마무리 참고 : howtosolutions.net - Visual Studio:..
1. 문제의 발견 잘 세팅해서 쓰고 있는데 어느 날 갑자기 타입스크립트가 경로를 못 찾는 에러를 뿜기 시작했습니다. 비주얼 스튜디오에서 에러만 날뿐 빌드도 잘되고 에러 없이 디버깅도 잘됩니다. 2. 원인 및 해결 방법 어느 게 문제인지 찾지 못하던 중에..... 돌아다니는 타입스크립트 설정파일(tsconfig.json)를 보면 'include'에 'src'들어가 있는 게 많다? 그래서 넣어보니 에러가 제거되었습니다. 마무리 일단은 해결됐지만 언제 또 무슨 일이 터질지는.... 원래는 에러가 나야 하는 건데 안 나던 것인지 다른 사람들 설정 파일에는 'src'가 들어있는 게 많습니다. 기존에는 왜 에러가 안 났으며, 빌드에도 지장 없는 게 왜 에러로 잡히며, 왜 지금은 에러로 잡히는지....... 모든 것..
비주얼 스튜디오에는 주석의 내용을 XML 파일로 출력해주는 기능이 있습니다. 이렇게 생성된 XML은 1) 스웨거 같은 문서 생성 도구나 2) 직접 파싱하여 필요한 곳에 주석으로 붙이기 예> 자동으로 'JSON'으로 출력한 코드에 주석 붙이기 등에 활용할 수 있습니다. 대신 이 기능을 활성화하면 주석이 없는 함수에 경고가 표시됩니다. 1. 문제의 발견 이게 보통 때는 문제가 없지만 'DB 마이그레이션 파일'과 같이 자동으로 생성되는 파일에도 경고가 난다는 것이 문제입니다. 그렇다고 하나하나 수작업할 수도 없는 노릇이고.... 2. 해결 방법 옵션이 따로 있지는 않고 경고 예외를 걸어주면 됩니다. 프로젝트 속성 > 빌드 > 오류 및 경고 '1591' 추가 (참고 : MS Learn - 컴파일러 경고(수준 4..
비주얼 스튜디오(Visual Studio)에서는 창이 많아지면 줄밖으로 나가는 창을 자동으로 숨겨집니다. 이렇게 되면 창이 한눈에 보이질 않아서 불편했는데 이것이 해결되는 기능이 생겼습니다. 1. 다중 행 탭(Tabs in Multiple Rows) 비주얼 스튜디오의 17.3 버전에 '다중 행 탭(Tabs in Multiple Rows)' 기능이 생겼습니다. 창을 여러 개 열면 안 보이는 탭은 옆의 화살표로 숨는데 이때 창을 숨기지 않고 전체를 다 표시해주는 기능입니다. 저처럼 여러 창을 오가며 작업하는 사람한테는 정말 좋은 기능입니다. 2-1. 옵션 활성화 방법 1 옵션 > 환경 > 탭 및 창 > 문서 탭 에서 '여러 행에 탭 표시'를 활성화하면 됩니다. 2. 옵션 활성화 방법 2 탭에서 오른쪽 클릭해..
'ASP.NET Core'의 기능으로 쿠키를 저장하는데.... 로컬에서는 잘되지만, 배포를 하면 저장되지 않는 현상을 겪었습니다. 같은 IIS인데 로컬호스트로 접속하면 되고 외부에서 접속하면 안 되는 현상이죠. 1. 원인 이런 경우 거의 보안 문제 때문에 그렇습니다. 로컬로 접속하면 보안이 느슨해져서 되는 거죠. 그래서 생각해보니 쿠키를 저장할 때 Secure : HTTPS에서 암호화 되었을 때만 쿠키를 전송 HTTPOnly : 자바스크립트에서는 해당 쿠키에 접근 못하게 함 옵션이 켰다는 게 생각났습니다. 'HTTPOnly'옵션은 이 문제와 상관없지만 'Secure'옵션을 넣으면 HTTPS에서만 쿠키에 접근할 수 있습니다. 2. IIS에 임시 SSL 생성하기 개발단계에서 정식 SSL을 발급받는 건 귀찮고..
이미 git이 추적 중인 파일을 '.gitignore'에 추가하여 제외하면 제외가 되지 않을걸 볼 수 있습니다. 이것은 이미 git이 캐쉬를 하고 있기 때문에 그렇습니다. 연관글 영역 1. 추적에서 제외하기 이 추적을 막고 파일을 지우기 위한 명령은 git rm [파일 경로] 입니다. (참고 : git Reference - git rm ) 로컬 저장소와 깃에 파일을 지우고 추적을 막습니다. 로컬의 파일은 남기고 싶다면 '--cached' 옵션을 추가합니다. git rm --cached [파일 경로] 폴더 단위로 제외하기 폴더 단위로 제외하고 싶다면 git rm -r [폴더 경로] 로컬의 파일은 남기고 싶다면 '--cached' 옵션을 추가합니다. git rm -r --cached [파일 경로] 2. 비주..
리액트의 훅(hook)은 클래스 컴포넌트(Class Component)에서 지원하지 않습니다. 그래서 클래스에서 사용할 수 있는 다른 기능들을 제공하는데..... 제공 안되는 기능들이 있습니다. 이럴 때 사용하는 방법이 고차 컴포넌트(HOC, Higher Order Component)입니다. (참고 : React Docs - 고차 컴포넌트 ) 1. 원리 원리는 1) 함수형 컴포넌트(Function Component)를 만들고 2) 필요한 훅을 'props'에 넣도록 구성하고 3) 클래스형 컴포넌트를 감싸서(랩퍼 구현, Wrapped) 4) 'props'를 전달받습니다. 이렇게 구현하면 클래스 컴포넌트에서 사용할 수 없었던 'useNavigate'나 'useLocation'같은 훅들도 사용할 수 있습니다...
오류 내용만 보면 "뭔 소린가?" 싶겠지만 정확하게 오류 원인을 설명하고 있습니다. Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body. '창'에서 '가져오기' 실행 실패: GET/HEAD 메서드를 사용한 요청은 본문을 가질 수 없습니다. 1. 원인 'fetch'를 'GET'이나 'HEAD'로 호출했을 때 바디(body)이 있다면 발생하는 에러입니다. 이 두 메소드는 본문을 가질 수 없고 대신 URL 쿼리로 데이터를 전달합니다. 그래서 바디가 있다면 에러가 나게 됩니다. 2. 해결 방법 인터넷을 뒤져보면 'POST'로 바꾸라는 소리도 나오는데..... 그건 'REST(Representational Stat..
비주얼 스튜디오에서 'json' 형식에 맞지 않으면 경고가 나옵니다. 문제는 JSON의 특징상 규격이 안 맞을 수 있다는 것이죠. 1. 옵션 끄기 비주얼 스튜디오에서 JSON경고를 끄려면 다음 옵션을 꺼줍니다. (Visual Studio json warning off) 도구 > 옵션 > JSON > 고급 > 유효성 검사 사용 이 옵션을 'false'로 설정합니다. (참고 : stackoverflow - How to suppress a warning from Newtonsoft.Json in Visual Studio when no CheckId is provided? 의 Jeff님 답변 ) 2. 스키마 선택 정석적인 방법은 알맞은 JSON 스키마를 선택하는 것입니다. 이미 정해진 스키마가 있는 JSON이라..