2023/12/05にAstro 4.0がリリースされました。リリースサイクルが早すぎて頭がおかしくなる。
このブログに影響のあるBreaking Changesはなかったので、pnpm dlx @astrojs/upgrade
でAstro 3からそのまま移行しました。astro build
は問題なかったのですが、astro dev
で画像のあるページをロードすると、sharpがmunmap_chunk(): invalid pointer
エラーを起こしてしまいました。いちいちビルドして結果を確認するのは苦痛なのでどうにかします。
環境
- Windows 11 Pro 23H2のWSL2上でNode 21.4を動作させています。
- sharpのバージョンは
0.33.0
です。
$ npx envinfo --binaries --system --npmPackages=sharp --npmGlobalPackages=sharp
System:
OS: Linux 5.15 Ubuntu 22.04.3 LTS 22.04.3 LTS (Jammy Jellyfish)
CPU: (12) x64 12th Gen Intel(R) Core(TM) i5-12400F
Memory: 12.96 GB / 15.54 GB
Container: Yes
Shell: 3.3.1 - /usr/bin/fish
Binaries:
Node: 21.4.0 - /usr/local/bin/node
Yarn: 1.22.19 - /usr/bin/yarn
npm: 10.2.4 - /usr/local/bin/npm
pnpm: 8.7.5 - /usr/bin/pnpm
$ pnpm astro info
Astro v4.0.4
Node v21.4.0
System Linux (x64)
Package Manager pnpm
Output static
Adapter none
Integrations build-ogimages
algolia-queries
@astrojs/react
@astrojs/sitemap
@astrojs/tailwind
auto-import
@astrojs/mdx
発生した事象
pnpm astro dev
で画像のあるページをロードするとmunmap_chunk(): invalid pointer
が発生しました。
vite:load 4.06ms [fs] /src/layouts/Default.astro +3ms
vite:cache [memory] /node_modules/.pnpm/astro@4.0.4_sass@1.69.5_typescript@5.3.3/node_modules/astro/dist/runtime/compiler/index.js +8ms
vite:cache [memory] /src/lib/utils/textConverter.ts +0ms
vite:import-analysis 0.55ms [2 imports rewritten] src/layouts/Default.astro +7ms
vite:transform 4.39ms /src/layouts/Default.astro +7ms
# 画像が描画できずにastroが停止した
munmap_chunk(): invalid pointer
Aborted
ELIFECYCLE Command failed with exit code 134.
解決した方法
以下のissueが自分の状況に近かったのですが、自分の場合はsharp 0.33.0
単体では動作するものの、Viteと組み合わせるとだめ、かつ0.32.6
に戻しても動かないという状態でした。
- Vercel only: 0.33.0: error Could not load the “sharp” module using the linux-x64 runtime · Issue #3870 · lovell/sharp
- fix: Pin bundled `sharp` version as hotfix by bayssmekanique · Pull Request #3575 · sst/sst
もう少し調べてみると、Netlifyのサポートフォーラムに、おそらく同じ事象と思われる投稿がありました。
Problem was an outdated vite-imagetools dependenency which was causing two versions of the sharp library to be loaded into the process.
vite-imagetools
はインストールされていない(はず)なのでちょっと納得が行きませんが、Astro 4ではViteのバージョンが5に上がってるのと、devだけでエラーが出ているので恐らくこれが正解な気がします。
package.json
を次のように修正しました。
"pnpm": {
"overrides": {
"sharp": "^0.33.0"
}
}
pnpm install
後にpnpm astro dev
で画像のあるページをロードしてみたところ、無事画像が描画されました。
vite:load 2.63ms [fs] /src/layouts/Default.astro +2ms
vite:cache [memory] /node_modules/.pnpm/astro@4.0.4_sass@1.69.5_typescript@5.3.3/node_modules/astro/dist/runtime/compiler/index.js +7ms
vite:cache [memory] /src/lib/utils/textConverter.ts +1ms
vite:import-analysis 0.63ms [2 imports rewritten] src/layouts/Default.astro +8ms
vite:transform 5.41ms /src/layouts/Default.astro +7ms
# 無事画像が描画された
22:24:31 [200] /_image 18ms
vite:time 38.31ms /_image?href=%2F%40fs%2Fhome%2Fsakuramochi%2Fastro-blog%2Fsrc%2Fcontent%2Fposts%2F_images%2F2020%2F09%2Fimage-1599299615671.png%3ForigWidth%3D507%26origHeight%3D164%26origFormat%3Dpng&f=webp +98ms
22:24:31 [200] /_image 22ms
vite:time 43.57ms /_image?href=%2F%40fs%2Fhome%2Fsakuramochi%2Fastro-blog%2Fsrc%2Fcontent%2Fposts%2F_images%2F2020%2F09%2Fimage-1599299475511.png%3ForigWidth%3D514%26origHeight%3D282%26origFormat%3Dpng&f=webp +4ms
2日くらいずっと調べていたのですが情報が全く出てこなかったので、WSL特有の事象なのかもしれません。なんにしても解決してよかったです。ありがとうNetlifyのフォーラムに投稿してくれた人…。
2023/12/20 追記
依存関係を調べたのですが、astroのoptionalDependencies
とpackage.jsonで異なるバージョンが混在していました。開発側も問題を認識しているようで、PRが上がっています。
- Cannot build when using Sharp 0.33.0 · Issue #9345 · withastro/astro
- fix(deps): Update Sharp optionalDep version by Princesseuh · Pull Request #9463 · withastro/astro
近いうちに解消しそうですね。良かったです。