環境
- Nextjs 16.1.6
- React 19.2.4
- Node 24.13.1
- isomorphic-dompurify 3.0.0
経緯
ブログの記事を閲覧しようとした際に500エラーになった。
記事取得のAPI自体の確認をしてみたが正常に取得できていた。
Nextjs側のログを確認したところ、そっちで以下エラーを確認。 \
⨯ Error: Failed to load external module jsdom-4cccfac9827ebcfe: Error [ERR_REQUIRE_ESM]: require() of ES Module /var/task/node_modules/@exodus/bytes/encoding-lite.js from /var/task/node_modules/html-encoding-sniffer/lib/html-encoding-sniffer.js not supported. Instead change the require of encoding-lite.js in /var/task/node_modules/html-encoding-sniffer/lib/html-encoding-sniffer.js to a dynamic import() which is available in all CommonJS modules. at Context.externalRequire [as x] (.next/server/chunks/ssr/[turbopack]_runtime.js:535:15) at module evaluation (.next/server/chunks/ssr/[root-of-the-server]__1f1143ac._.js:1:107) at instantiateModule (.next/server/chunks/ssr/[turbopack]_runtime.js:740:9) at getOrInstantiateModuleFromParent (.next/server/chunks/ssr/[turbopack]_runtime.js:763:12) at Context.esmImport [as i] (.next/server/chunks/ssr/[turbopack]_runtime.js:228:20) at module evaluation (.next/server/chunks/ssr/[root-of-the-server]__1f1143ac._.js:1:22217) at instantiateModule (.next/server/chunks/ssr/[turbopack]_runtime.js:740:9) at getOrInstantiateModuleFromParent (.next/server/chunks/ssr/[turbopack]_runtime.js:763:12) at Context.esmImport [as i] (.next/server/chunks/ssr/[turbopack]_runtime.js:228:20) at module evaluation (.next/server/chunks/ssr/_45305490._.js:1:95) { page: '/blog/019c6205-3351-77d2-996c-b29eae6a5751' }
何に使ってるかわからんかったのでnpm ls jsdomで調べたところisomorphic-dompurifyで使ってた。
こいつ自体は、ユーザーが入力したデータや外部から取得したデータを表示する際、不正なスクリプトや危険な文字列を無害化するために使われる。
念の為に入れといたものがNextのSSR時だとエラーになるようだった。\
対応内容
以下で対応報告が上がってた。
https://github.com/kkomelin/isomorphic-dompurify/issues/394
こっちの環境ではnpmを使っていたので、package.jsonのOverridesで
"jsdom": {
".": "25.0.1",
"parse5": "7.3.0"
}
とすることで解決。

