크고 작은 문제들 26

[npm] nvm으로 node.js 버전을 설치하였으나 다시 켤 때마다 npm을 찾지 못하는 오류

상황 nvm install 옵션 중 lts 옵션을 사용해 보고자 nvm -ls로 확인된 lts 버전 중 lts/Gallium(v16.20.1)을 아래의 명령어로 설치 # 잘못된 명령어입니다. Gallium -> gallium nvm install --lts=Gallium 설치 후 lts 중 Gallium은 없다는 식의 오류가 발생하였으나 대수롭지 않게 넘기고 직접 v16.20.1 버전을 명시하여 다시 설치하였습니다. 하지만 처음 입력된 lts/Gallium이라는 버전이 default로 이미 지정되었고, 터미널을 다시 실행할 때마다 이것을 기본으로 실행하였습니다. 원인 대문자로 시작하는 Gallium이 아니라 gallium으로 입력했어야 옳습니다. 해결 nvm alias default default 버전을..

테스트 파일 확장자 실수

문제 다른 페이지에 대한 테스트케이스를 추가하고자 기존의 테스트를 복사하여 붙여넣기 하였습니다. eslint에서 불만을 토로하는 것을 확인하고 stash, pop, 브랜치 작업을 하는 과정에서 eslint 설정이 바뀌었나 싶어서 설정 확인 결과 jest 관련된 설정 모두 이상 없음을 확인했습니다. 초기 설정부터 들어있던 jest가 사라졌나 싶었지만 그것도 아닙니다. 그 순간 JavaScript 아이콘이 눈에 들어왔습니다. 아차... 해결 QuestionItemPage.test copy.js → QuestionPage.test.js 로 파일명을 변경하니 말끔히 해결되었습니다.

[node.js] 백준 문제풀이 시간초과(console.log)

문제 상황 로직 자체는 간결하게 작성한 것 같으나 제출한 코드가 시간 초과로 통과되지 않았습니다. 글 읽기 - [node.js] 10828번 - 스택 / 시간초과 댓글을 작성하려면 로그인해야 합니다. www.acmicpc.net console.log를 호출하는 횟수가 늘어날 수록 프로그램 실행 시간이 급격하게 늘어납니다. 따라서, 배열에 모든 결과를 저장해 두었다가 배열을 join하여 하나의 문자열로 만든 뒤, console.log를 한 번만 호출하여 해결하는 것이 핵심입니다. const result = []; // ... result.push()로 결과 저장 console.log(result.join('\n')); console.log 호출 횟수에 따라 실행 시간에 큰 차이가 발생한다는 사실만 보면 되..

[node.js] Github Actions로 테스트 수행 중 replaceAll 함수 오류

오류 // TypeError: input.replaceAll is not a function 해결 오류 메시지 중 replaceAll 부분에 눈을 돌렸습니다. 검색하자마자 node 환경에서 replaceAll을 지원하지 않으므로 replace 메서드를 활용하여야 한다는 내용을 접하였습니다. 이전에 Array의 at 메서드 같은 경우 특정 환경에서 사용할 수 없었던 경험이 있어서 빠르게 의심할 수 있었습니다. // before replaceAll(" ", "") // after replace(/\s/g, "") 위와 같이 수정한 후 정상적으로 실행되었습니다.

[React + Jest] 두 번째 테스트 케이스부터 컴포넌트를 찾을 수 없는 문제(자동 cleanup)

문제 상황 분명히 컴포넌트를 렌더링하고 테스트했음에도 두 번째 테스트부터는 렌더링된 컴포넌트에 접근할 수 없었습니다. // ... import문 render( ); test('1번 테스트', () => {}); test('2번 테스트', () => {}); 렌더링된 내용이 두 번째 테스트까지 유지되지 않는다고 생각하고 다음의 내용을 시도하였습니다. 시도 1 beforeAll을 사용해서 렌더링했으나 효과가 없습니다. 그 이유는 beforeAll은 첫 테스트 이전에 한 번만 실행되기 때문입니다. describe('Todos 컴포넌트 관련 테스트', () => { beforeAll(() => { render( ); }); // ... test }); 시도 2 beforeAll이 아닌 beforeEach를 사용..

[React] Warning: validateDomNesting(...)

오류 실전을 멀리 했던 초보 개발자는 Create React App으로 프로젝트를 구성하였다가 위와 같은 실수를 저지르고 맙니다. React App은 이미 HTML body 안에 렌더링되고 있는 것이기 때문에 React 컴포넌트 안에 직접 body 태그를 작성하는 경우, body를 중복해서 사용하는 것이 됩니다. 해결 React 컴포넌트 안에서 사용한 body 태그를 제거하였습니다. 덧 오류 자체는 HTML 요소 간의 부모-자식 관계를 부적절하게 설정하였을 때 발생합니다. 태그 안에 태그가 들어가는 경우 - https://anerim.tistory.com/211 태그 안에 다시 태그가 들어가는 경우 - https://stackoverflow.com/questions/47282998/validatedomn..