suhdonghwi / nuri

누리 : 함수형 한글 프로그래밍 언어
https://nuri.donghwi.dev
MIT License
338 stars 13 forks source link

Windows에서 빌드된 바이너리로 실행 시 openFile 에러 #19

Closed joonas-yoon closed 4 years ago

joonas-yoon commented 4 years ago

OS: Windows 10 64bit (Build 18362)

0.1.0 배포판에 있던 Windows.zip 으로 작업하였습니다.

실행하려고 했던 파일 이름과 내용은 아래와 같습니다.

main.nuri:

꾸러미 "유용한 함수들.nuri"

"안녕?"을 보여주다

EUC-KR 인코딩에 개행은 CRLF으로 저장했습니다.

가이드대로 해봤는데 쉘마다 아래 메시지로 실행이 안되네요.

CMD:

C:\Users\joonas-yoon\Downloads\누리\Windows>chcp 65001
Active code page: 65001

C:\Users\joonas-yoon\Downloads\누리\Windows>nuri.exe main.nuri
nuri.exe: main.nuri: hGetContents: invalid argument (invalid byte sequence)

C:\Users\joonas-yoon\Downloads\누리\Windows>nuri.exe ./main.nuri
nuri.exe: ./main.nuri: hGetContents: invalid argument (invalid byte sequence)

Powershell:

PS C:\Users\joonas-yoon\Downloads\누리\Windows> chcp 65001
Active code page: 65001

PS C:\Users\joonas-yoon\Downloads\누리\Windows> nuri.exe main.nuri
nuri.exe : 'nuri.exe' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음
 다시 시도하십시오.
위치 줄:1 문자:1
+ nuri.exe main.nuri
+ ~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (nuri.exe:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Suggestion [3,General]: nuri.exe 명령이 현재 위치에 있지만 이 명령을 찾을 수 없습니다. Windows PowerShell은 기본적으로  현재 위치에서 명령을 로드하지 않습니다. 이 명령을 신뢰하는 경우 대신 ".\nuri.exe"을(를) 입력하십시오. 자세한 내용은 "get-help about_Command_Precedence"를 참조하십시오.

PS C:\Users\joonas-yoon\Downloads\누리\Windows> .\nuri.exe main.nuri
nuri.exe: main.nuri: hGetContents: invalid argument (invalid byte sequence)

Git Bash (MinGW64):

joonas-yoon@desktop MINGW64 ~/Downloads/누리/Windows
$ ./nuri.exe main.nuri
nuri.exe: .\ .nuri: openFile: does not exist (No such file or directory)

추가로 설치해야할 의존성이 있나요?

joonas-yoon commented 4 years ago

현재 릴리즈된 Windows.zip 은

Windows
|- _뗡뀼_뗡뀷_솽꼺_■넫 _믟뀫_료꼮__꼦_녁넰.nuri    # 유용한 꾸러미로 추정됨
|- hanuel.exe
|- nuri.exe

이고, 하나 있는 누리파일은 UTF-8LF 방식으로 저장되어 있네요.

suhdonghwi commented 4 years ago

제가 지금 윈도우를 쓸 만한 마땅한 환경이 없어서 윈도우 환경에서는 테스트가 충분히 되지 않았고 문자 인코딩 호환성에 대한 버그가 많습니다. 아직 윈도우는 많이 불안정하다고 생각해주시고, 실행해보고 싶으시다면 WSL 같은 시스템을 이용해주세요..!

kmc7468 commented 4 years ago

누리 코드를 UTF-8로 저장해 보세요. 방금 테스트해 봤더니 코드를 UTF-8로 저장했을 땐 문제 없이 잘 작동했고, EUC-KR로 저장했을 때는 joonas-yoon님과 같은 오류가 발생하네요.

joonas-yoon commented 4 years ago

네, 저도 이슈를 올리기 전에 여러 인코딩으로 변경해봤는데, UTF-8로 저장해도 안되더군요. 아래는 에러 메시지입니다.

CMD> nuri.exe main.nuri
nuri.exe: .\ .nuri: openFile: does not exist (No such file or directory)

경로에 한글이 없어도 안되는데, 무슨 이유인 지 모르겠네요.

kmc7468 commented 4 years ago

_뗡뀼_뗡뀷_솽꼺_■넫 _믟뀫_료꼮__꼦_녁넰.nuri 파일의 이름을 유용한 함수들.nuri 로 변경해도 안되시나요?

joonas-yoon commented 4 years ago

@kmc7468 엇, 해결되었습니다. 감사합니다. 분명 VSCode에서 처음에 이름을 바꿔보고 했었는데 그 때는 다른 이유로 안 됐었나 봅니다.

현재 릴리즈에는 __MACOSX/.DS_Store도 있는데 Windows 10에서 잘 동작한 지금 버전을 여기에 링크로 올려보겠습니다.

joonas-yoon commented 4 years ago

Windows.zip

Windows/
|- haneul.exe
|- main.nuri
|- nuri.exe
|- 유용한 함수들.nuri

Windows 10 환경에서 압축한 파일입니다. 이슈는 덕분에 잘 해결되었습니다. 👍

suhdonghwi commented 4 years ago

도움 주셔서 감사합니다 :) 릴리즈 파일 수정하고 추후 릴리즈에도 참고하도록 하겠습니다!