From 2f11e5abab3c58045d172c52f209e89827d83af8 Mon Sep 17 00:00:00 2001 From: SASAGAWA Kiyoshi Date: Wed, 3 Jun 2026 02:01:57 +0900 Subject: [PATCH] =?UTF-8?q?fix(backend):=20NSFW=E6=A4=9C=E5=87=BA=E3=83=A2?= =?UTF-8?q?=E3=83=87=E3=83=AB=E3=81=8Cfile://=E3=82=B9=E3=82=AD=E3=83=BC?= =?UTF-8?q?=E3=83=A0=E3=81=A7=E8=AA=AD=E3=81=BF=E8=BE=BC=E3=82=81=E3=81=AA?= =?UTF-8?q?=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #17501 で `@tensorflow/tfjs-node` を bundle 外に出した結果、bundle 内の `nsfwjs` が抱える `@tensorflow/tfjs-core` と external な tfjs-node が使う tfjs-core が別インスタンスに分裂し、tfjs-node が登録する `file://` IOHandler を nsfwjs 側が共有できなくなった。このため nsfwjs のモデル読み込みが HTTP handler (node-fetch) にフォールバックし `URL scheme "file" is not supported` で失敗する。 `nsfwjs` と `@tensorflow/*` も external 化し、単一の tfjs-core インスタンスに 統一することで file:// IOHandler を共有させる。 Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 1 + packages/backend/rolldown.config.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d816a00c81e..a97391c3db1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ - Enhance: リモートノートクリーニングジョブのスキップ処理のパフォーマンス改善 - Enhance: リモートノートクリーニングジョブの削除対象検索処理のパフォーマンス改善 - Fix: backend バンドルで `@tensorflow/tfjs-node` を external に含めず、起動時に `@mapbox/node-pre-gyp` の `find()` が backend の package.json を誤検出して `is not node-pre-gyp ready` エラーを永続的に吐く問題を修正 +- Fix: センシティブメディア検出(NSFW)のモデルが `URL scheme "file" is not supported` エラーで読み込めず機能しない問題を修正 (bundle 内の `nsfwjs` と external な `@tensorflow/tfjs-node` で `@tensorflow/tfjs-core` インスタンスが分裂し `file://` IOHandler を共有できないため、`nsfwjs` と `@tensorflow/*` も external 化) - Fix: フォロワー限定投稿を指名投稿で引用した際に、引用した投稿の公開範囲が意図せず変更される問題を修正 ## 2026.5.4 diff --git a/packages/backend/rolldown.config.ts b/packages/backend/rolldown.config.ts index 4710e8adae7..60c843dc616 100644 --- a/packages/backend/rolldown.config.ts +++ b/packages/backend/rolldown.config.ts @@ -66,7 +66,14 @@ export default defineConfig((args) => { '@nestjs/microservices/microservices-module', '@nestjs/microservices', /^@napi-rs\/.*/, - '@tensorflow/tfjs-node', + // @tensorflow/tfjs-node はネイティブバインディングを持つため external 必須 (#17501)。 + // あわせて nsfwjs と @tensorflow/* 全体を external にする。bundle 内の nsfwjs が + // 抱える @tensorflow/tfjs-core と、external な tfjs-node が使う tfjs-core が + // 別インスタンスに分裂すると、tfjs-node が登録する file:// IOHandler を nsfwjs 側が + // 共有できず、モデル読み込みが HTTP handler(node-fetch) にフォールバックして + // 「URL scheme "file" is not supported」で失敗するため。 + /^@tensorflow\/.*/, + 'nsfwjs', 'mock-aws-s3', 'aws-sdk', 'nock',