티스토리 뷰

경로에 빈칸 있는 경우, 특수 문자 있는 경우 에러

데스크탑 앱을 자동 업데이트를 진행하려고 합니다.
그러나 설치 경로 중 빈칸이 들어간 경우특수 문자가 들어간 경우에 정상 작동하지 않은 문제가 있었습니다.

실행방법\폴더명 안(경) 안{경} !#$^& 안 경 원
업데이트 X O X X

Tech

  • NW.js

 

처음 왜? 이럴까 생각을 해봤습니다.
execSync 부분에서 문제가 발생하여 크게 3가지로 예상 할 수 있었습니다.

  1. 명령어 문제: xCopy, pkill명령어가 동작하지 않는 경우
  2. 경로 문제: 잘못된 경로인 경우
  3. 명령어 + 경로 문제: 명령어와 경로를 합쳤을 때 동작을 하지 않는 경우

우선 업데이트 순서를 이미지로 간단하게 설명하도록 하겠습니다.

1. 명령어 문제

xCopy, pkill명령어가 동작하지 않는 경우를 판단하기 위해
terminal에 명령어를 입력해보면서 확인을 했습니다.

그런데 문제 없네요 :)

그러나 사용자분들 컴퓨터 중에 명령어가 동작하지 않는 컴퓨터가 존재합니다.
그러면 환경 변수 path를 재설정하여 문제를 해결하면 됩니다.

 

2. 경로 문제

잘못된 경로인 경우라고 판단하였습니다.

사용하는 경로는 __dirname, process.execPath 등 가져와서 사용하는 것들과
가공하는 것들이 있었습니다.

그런데 이것도 잘 나오는 것을 판단하였습니다.

 

3. 명령어 + 경로 문제

위의 상황들이 맞으니 다른 방법으로 확인해야 했습니다.
그래서 그냥 무식하게 파일이 생성,제거,복사등을 보기 위해 폴더를 켜놨습니다.

그런데 동작을 안하는 것을 볼 수 있었습니다.

즉, 빈칸이 들어간 경우특수 문자가 들어간 경우 terminal에서 다른 값으로 인식하여 생긴 문제
=> terminal 값 적용 문제

간단한 예시를 들겠습니다.

기존 코드 예시

const tmp_cur_path = "/팽 팽/paeng";
const tmp_dest_path = "/행 행/paeng";

const tmp_command = `xCopy ${tmp_cur_path} ${tmp_dest_path}`;

terminal 실행

$ xCopy /팽 팽/paeng /행 행/paeng

수정 코드 예시

const tmp_cur_path = "/팽 팽/paeng";
const tmp_dest_path = "/행 행/paeng";

const tmp_command = `xCopy "${tmp_cur_path}" "${tmp_dest_path}"`;

terminal 실행

$ xCopy "/팽 팽/paeng" "/행 행/paeng"

차이점이 보이시나요?

바로 경로에 ""(큰따옴표) 차이 입니다.
기존의 코드는 ""(큰따옴표)를 이용하지 않아 빈값이나, 특수문자가 이상하게 인식이 되었습니다.
그래서 경로가 맞지 않았던 거였습니다.

그래서 뭉텅이로 사용하기 위해 ""(큰따옴표)를 사용하여 확실하게 정의하였습니다.

이로 인해 문제가 해결되었습니다.

 

마치며

예상 범주내에서 문제해결책이 발견되어서 정말정말 다행이었습니다.
대부분의 경우 버전 체크, 업데이트 등 작성한 코드외에서 발생하는 경우가 엄청 많은데
운이 좋았습니다.
저와 비슷한 문제를 겪으신 분들이 빠르게 문제를 해결했으면 하는 마음에 작성하게 되었습니다.
긴 글 읽어주셔서 감사합니다.

반응형
공지사항
최근에 올라온 글