fix: 모바일 웹 가계부 내역 진입 불가(청크 로드 실패) 해결
CI / build (push) Failing after 12m17s

- @capacitor/camera 정적 import 제거 → 네이티브에서만 동적 import
  (웹은 카메라를 호출하지도 않는데 정적 import가 AccountView 청크 평가를 깨뜨려
   모바일 웹에서 진입 시 청크 로드 실패 → onError 새로고침 → 로그인 루프 발생)
- router.onError 경로별 1회 새로고침으로 제한(무한 루프 방지) + 성공 시 플래그 정리

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ByungCheol
2026-06-03 18:29:00 +09:00
parent f45be09ff1
commit 8f8744ba4b
2 changed files with 19 additions and 11 deletions
+7 -5
View File
@@ -4,7 +4,7 @@ import { accountApi } from '@/api/accountApi'
import IconBtn from '@/components/ui/IconBtn.vue'
import { imageToBlob, parseReceiptText } from '@/utils/receiptOcr'
import { Capacitor } from '@capacitor/core'
import { Camera, CameraResultType, CameraSource } from '@capacitor/camera'
// @capacitor/camera 는 네이티브에서만 동적 로드 (웹은 file input 사용 — 정적 import 시 모바일 웹 청크 로드 실패 유발)
const now = new Date()
const year = ref(now.getFullYear())
@@ -70,7 +70,7 @@ function pickReceipt() {
async function chooseCamera() {
receiptPickerOpen.value = false
if (Capacitor.isNativePlatform()) {
await captureFrom(CameraSource.Camera)
await captureFrom('CAMERA')
} else {
webCapture.value = true
await nextTick()
@@ -80,17 +80,19 @@ async function chooseCamera() {
async function chooseGallery() {
receiptPickerOpen.value = false
if (Capacitor.isNativePlatform()) {
await captureFrom(CameraSource.Photos)
await captureFrom('PHOTOS')
} else {
webCapture.value = false
await nextTick()
receiptInput.value?.click()
}
}
async function captureFrom(source) {
// 네이티브 전용 — 카메라 플러그인을 이 시점에만 동적 로드
async function captureFrom(sourceKey) {
try {
const { Camera, CameraResultType, CameraSource } = await import('@capacitor/camera')
const photo = await Camera.getPhoto({
source,
source: sourceKey === 'CAMERA' ? CameraSource.Camera : CameraSource.Photos,
resultType: CameraResultType.DataUrl,
quality: 70,
correctOrientation: true,