merge: Server Action 본문 제한 해제 (아이템 등록 무반응 수정)
아이템 수정 API 형식(PUT=JSON)과 수정일 매핑(`lastMdfcnDtStr`)은 hub에 이미 같은 수정이
들어와 있어 hub 쪽 구현을 그대로 두었다 — 형식 분기를 호출부가 `{form}`/`{body}`로 넘기는
쪽이 `sendWrite` 안에서 method로 갈라내는 것보다 읽기 쉽다.
이 병합이 실제로 더하는 것은 `next.config.ts`의 `serverActions.bodySizeLimit`이다.
Server Action 본문 기본 상한 1MB에 걸려 이미지가 413으로 잘리고 있었고, 그때 액션 본문이
실행되지 않아 화면에는 오류 없이 폼만 비워졌다("아무 반응 없음"). 게시판 첨부도 같은 구조라
함께 낫는다.
Co-Authored-By: Claude Opus 5
@083f6afd508bb4a6fa9d00091fa472328008e49d
--- next.config.ts
+++ next.config.ts
... | ... | @@ -20,6 +20,18 @@ |
| 20 | 20 |
]; |
| 21 | 21 |
|
| 22 | 22 |
const nextConfig: NextConfig = {
|
| 23 |
+ experimental: {
|
|
| 24 |
+ serverActions: {
|
|
| 25 |
+ // 이미지·첨부파일은 Server Action **본문에 실려** 온다(브라우저가 백엔드를 직접 부르지 |
|
| 26 |
+ // 않으므로 — 토큰이 httpOnly 세션 안에만 있다). 기본값 1MB로는 웬만한 이미지가 요청 |
|
| 27 |
+ // 단계에서 413으로 잘리는데, 그러면 **액션 본문이 실행조차 되지 않아** `useActionState`가 |
|
| 28 |
+ // idle 그대로다 — 화면에는 오류도 토스트도 없이 폼만 비워져 "아무 반응 없음"으로 보인다. |
|
| 29 |
+ // 백엔드는 `CommonsMultipartResolver`가 100MB까지 받지만, 이 본문은 Next 서버 메모리에 |
|
| 30 |
+ // 통째로 올라가므로 관리 화면에 필요한 만큼만 연다. |
|
| 31 |
+ bodySizeLimit: '10mb', |
|
| 32 |
+ }, |
|
| 33 |
+ }, |
|
| 34 |
+ |
|
| 23 | 35 |
// SCSS 로드 경로 — 프로젝트 루트를 Sass의 loadPaths에 넣어 `@use "@fox/styles/abstracts"` |
| 24 | 36 |
// 같은 루트 기준 절대 경로가 해석되게 한다. 이게 없으면 컴포넌트마다 `../../../` 상대 |
| 25 | 37 |
// 경로를 써야 해서 @fox 폴더를 다른 프로젝트로 통째로 복사할 수 없다(포터블 요건). |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?