メインコンテンツまでスキップ

「rust」タグの記事が1件件あります

全てのタグを見る

· 約2分
ogumaru

概要

devcontainer 内にて、WebAssembly の npm パッケージをwasm-pack packするとエラーが発生する。

結論

Node.js を devcontainer 側にインストールする。

環境

項目バージョン
cargo1.64.0 (387270bc7 2022-09-16)
wasm-pack0.10.3
dockerversion 20.10.14, build a224086

詳細

mcr.microsoft.com/vscode/devcontainers/rust:0-bullseyeを元にした devcontainer 内に、下記にてwasm-packをインストールしていた。

cargo install wasm-pack

このコンテナ内でwasm-pack buildはできるものの、wasm-pack packは下記のエラーが発生した。

Error: Packaging up your code failed
Caused by: No such file or directory (os error 2)

対応

公式ドキュメントや Web 上を検索しても情報がなく困ったが、npm packを内部で呼び出しているのかと考え、下記コマンドを利用できるようにしたところ、無事wasm-pack packにて npm パッケージを作成することができた。

  • node
  • npm
  • npx

npmとサブコマンドが似ていることから当然といえばそうかもしれないが、気づかずに結構時間を使ってしまった。

なお、aptで入るものはバージョンが古いため、(差分が大きいが)下記コミットのようにアーカイブを展開する形で対応した。

update: devcontainer configuration (ff650765c668002ea1b8e8f056ef8a4907b6a6f8)

Node.js に関する該当箇所は下記

FROM busybox:1.34.1 as nodejs
ENV NODEJS_TARBALL_URL="https://nodejs.org/dist/v18.12.1/node-v18.12.1-linux-x64.tar.xz"
USER root
WORKDIR /root/.local
RUN mkdir -p bin/ node/ \
&& wget -O node.tar.xz "${NODEJS_TARBALL_URL}" --no-check-certificate \
&& xz -d -c node.tar.xz | tar xvf - -C node --strip-components 1 \
&& ln -s "/root/.local/node/bin/node" bin/ \
&& ln -s "/root/.local/node/bin/npm" bin/ \
&& ln -s "/root/.local/node/bin/npx" bin/ \
&& rm node.tar.xz