MDN의 'Rust를 WebAssembly로 컴파일하기' 를 따라해 봤다.
웹 어셈블리를 써보자! 하고 간단하게 시작해 봤다.
Rust를 WebAssembly로 컴파일하기 - 웹어셈블리 | MDN (mozilla.org)
이글이다.
대충 러스트로 패키지를 만들어 npm에 올리고 그걸 받아서 사용하는 시나리오다.
wasm-pack에서 문제가 생겼다.
대충 구글링 결과 최신버전에서 펄 언어가 윈도우용 분기를 안만들어서 생긴 일 같다. (모름)
rust - can't install cargo wasm-pack - Stack Overflow
친절한 한 분이 직접 깃허브 페이지까지 파가며 대체 툴을 만들었다.
wasm-pack을 윈도우 환경에서 cargo 밖에서 따로 다운받을 수 있게 만들어 놨다.
wasm-pack (rustwasm.github.io)
cargo install wasm-pack 대신 이 명령어를 쓰면 되겠다. 여기서 몇십 분 삽질 했다.
계정 생성은 순조롭게 넘어갔다.
자본주의자들이 계정 생성에서 오류가 나게 내버려 둘 리가 없다.
javascript 외부함수 호출이 신기했다.
extern으로 alert같은 자바스크립트 함수를 호출할 수 있군.
하지만 마땅히 쓸 곳이 생각나지는 않는다. 거의 대부분의 조작이 오브젝트 메소드였던거 같은데...
컴파일 / 빌드 부분에서 내 이름 넣어야 되는 부분이 많다.
이거 아무 생각 없이 하나라도 안 고치면 진행 안된다는 걸 수차례 겪었다.
다행히 이번에는 막힘 없이 잘 됐다.
마지막에 서버 실행하는 데 문제가 생겼다.
패키지 몇 개가 deprecated 상태라며 진행이 안 됐다.
npm에서 webpack, webpack-cli, webpack-dev-server 세 개의 버전을 찾아서 최신 버전을 적었다.
파싱 실패 오류가 나왔다. webpack 5부터는 webassembly 사용이 기본으로 안된다는 내용이다. experiments.asyncWebAssembly: true를 추가하면 실행된다고 한다.
그리고 index.html이 public 폴더에 있어야 되더라.
아마 webpack 버전 안 바꿨으면 됐겠지. 내 미숙함을 체감하는 시간이었다.