fix(backend): NSFW検出モデルが file:// で読み込めない問題を修正 (#17528)

fix(backend): NSFW検出モデルがfile://スキームで読み込めない問題を修正

#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) <noreply@anthropic.com>
This commit is contained in:
SASAPIYO (SASAGAWA Kiyoshi) 2026-06-03 08:48:32 +09:00 committed by GitHub
commit d5ab42267c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 1 deletions

View file

@ -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

View file

@ -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',