Window vscode에서 kotlin lint가 안되는 문제

Lutica_·2024년 8월 13일

사건의 기술

Kotlin Language Client client: couldn't create connection to server.
Error: spawn EINVAL

  • 친구 코프링 서버좀 만지려는데 어느날 갑자기...
  • 미쳤는지 kotlin server와 연결이 안된다고 한다. 그래서 더 봤더니,
  • 아... 이거 확장문제인가 보다 해서 깃허브로 들어갔다.

문제의 원인

  • 문제의 원인은 그리 멀지 않았는데, 해당 이슈를 보면 아래와 같은 코멘트가 달려있다.

  • 여기 위에 있는 링크로 들어가보면, 아래와 같은 nodejs 패치가 등장한다.

  • 즉, 안전하지 않은 프로세스 입력(원격코드 실행의 일종이다.)이 실행되는것을 방어하기 위한 패치로 인하여 kotlinc이 실행되지 않아 발생한 버그이자 패치사항이라는 것이다.

예상하는 해결법

Hang up

  • 이거 기능의 일종이라 뭐 어찌할 도리가 없다. 잠시 기다리던지 하자.

우회하기

  • Vscode를 안쓰면 된다. Jetbrain을 쓰던 VS를 쓰던지 Esclips를 쓰던지 해서

Linux를 쓰면 이런일은 없지 않을까?

  • Window니까, Linux를 쓰면 편할 것같다.

(권장은 안함) 보안패치 되돌리기

  • nodejs를 다시깔고, 위의 --security-revert=CVE-2024-27980의 옵션을 넣고 다시깐다... 근데 어... 알아서 생각하자

미봉책

https://github.com/fwcd/vscode-kotlin/issues/153

이걸 참고해서 스크립트를 고쳐주자.

결론

    1. github에서 스크립트를 받는다.
    1. package.json중 맨 마지막의"vscode-languageclient" :" ..."vscode-languageclient": "9.0.1"로 바꾸고 npm install
    1. node_modules\vscode-languageclient\lib\node\main.js에서 cp.spawn을 검색해서 맨 마지막에 {shell : true}를 붙혀준다.
    1. 그리고 이게 중요한데, child_process.spawn을 검색해서 맨 마지막에 {shell : true}를 붙혀준다.
    1. npm run package-extension으로 VSC 확장 생성
    1. 그 확장을 VSCode에 설치후 재실핼해서 확인.

결과

profile
해보고 싶고, 하고 싶은 걸 하는 사람

0개의 댓글