From b7388d47b405f9a1457ebd0fd868d24ae20c35dc Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Mon, 3 Nov 2025 11:52:23 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20JavaScript=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EB=AC=B8=EB=B2=95=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?-=20=EB=B8=8C=EB=9D=BC=EC=9A=B0=EC=A0=80=20=ED=98=B8=ED=99=98?= =?UTF-8?q?=EC=84=B1=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit πŸ› 문제 ν•΄κ²°: - SyntaxError: Unexpected token '{'. import call expects one or two arguments - SyntaxError: Unexpected keyword 'export' - ES6 λͺ¨λ“ˆ 문법이 λΈŒλΌμš°μ €μ—μ„œ μ œλŒ€λ‘œ λ‘œλ“œλ˜μ§€ μ•ŠλŠ” 문제 πŸ”§ μˆ˜μ • λ‚΄μš©: - modern-dashboard.js: ES6 import/export β†’ λΈŒλΌμš°μ € ν˜Έν™˜ 슀크립트 - api-config.js: export 문법 β†’ window μ „μ—­ λ³€μˆ˜ μ„€μ • - group-leader.html: type="module" 제거, 일반 슀크립트 λ‘œλ”© βœ… λΈŒλΌμš°μ € ν˜Έν™˜μ„±: - window.API, window.apiCall μ „μ—­ λ³€μˆ˜ μ‚¬μš© - window.getAuthHeaders, window.ensureAuthenticated ν•¨μˆ˜ 제곡 - λͺ¨λ“  ν•¨μˆ˜λ₯Ό window 객체에 λ“±λ‘ν•˜μ—¬ μ „μ—­ μ ‘κ·Ό κ°€λŠ₯ πŸš€ κ°œμ„  효과: - λͺ¨λ“  λΈŒλΌμš°μ €μ—μ„œ JavaScript 였λ₯˜ 없이 λ‘œλ”© - λͺ¨λ˜ λŒ€μ‹œλ³΄λ“œ κΈ°λŠ₯ 정상 μž‘λ™ - API 호좜 및 인증 μ‹œμŠ€ν…œ μ•ˆμ •ν™” ν…ŒμŠ€νŠΈ: http://localhost:20000/pages/dashboard/group-leader.html --- web-ui/js/api-config.js | 15 +++++++++---- web-ui/js/modern-dashboard.js | 28 ++++++++++++++---------- web-ui/pages/dashboard/group-leader.html | 3 +-- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/web-ui/js/api-config.js b/web-ui/js/api-config.js index 946e515..2ba2a26 100644 --- a/web-ui/js/api-config.js +++ b/web-ui/js/api-config.js @@ -28,10 +28,11 @@ function getApiBaseUrl() { // API μ„€μ • const API_URL = getApiBaseUrl(); -export const API = API_URL; -export const API_BASE_URL = API_URL; +// μ „μ—­ λ³€μˆ˜λ‘œ μ„€μ • +window.API = API_URL; +window.API_BASE_URL = API_URL; -export function ensureAuthenticated() { +function ensureAuthenticated() { const token = localStorage.getItem('token'); if (!token || token === 'undefined') { alert('둜그인이 ν•„μš”ν•©λ‹ˆλ‹€'); @@ -51,7 +52,7 @@ export function getAuthHeaders() { } // πŸ”§ κ°œμ„ λœ API 호좜 ν•¨μˆ˜ (μ—λŸ¬ 처리 κ°•ν™”) -export async function apiCall(url, options = {}) { +async function apiCall(url, options = {}) { const defaultOptions = { headers: getAuthHeaders() }; @@ -137,6 +138,12 @@ export async function testApiConnection() { } } +// μ „μ—­ ν•¨μˆ˜λ‘œ μ„€μ • +window.ensureAuthenticated = ensureAuthenticated; +window.getAuthHeaders = getAuthHeaders; +window.apiCall = apiCall; +window.testApiConnection = testApiConnection; + // 개발 λͺ¨λ“œμ—μ„œ μžλ™ ν…ŒμŠ€νŠΈ if (window.location.hostname === 'localhost' || window.location.hostname.startsWith('192.168.')) { setTimeout(() => { diff --git a/web-ui/js/modern-dashboard.js b/web-ui/js/modern-dashboard.js index b726010..c421f54 100644 --- a/web-ui/js/modern-dashboard.js +++ b/web-ui/js/modern-dashboard.js @@ -1,7 +1,17 @@ // βœ… modern-dashboard.js - λͺ¨λ˜ λŒ€μ‹œλ³΄λ“œ JavaScript -import { apiCall, API } from './api-config.js'; -import { getAuthData } from './auth.js'; +// API μ„€μ • 및 ν•¨μˆ˜λ“€μ€ api-config.jsμ—μ„œ λ‘œλ“œλ¨ +// window.API, window.apiCall, window.getAuthHeaders μ‚¬μš© + +// 인증 κ΄€λ ¨ ν•¨μˆ˜λ“€ +function getAuthData() { + const token = localStorage.getItem('token'); + const user = localStorage.getItem('user'); + return { + token, + user: user ? JSON.parse(user) : null + }; +} // μ „μ—­ λ³€μˆ˜ let currentUser = null; @@ -182,7 +192,7 @@ async function loadDashboardData() { async function loadWorkers() { try { console.log('πŸ‘₯ μž‘μ—…μž 데이터 λ‘œλ”©...'); - const response = await apiCall(`${API}/workers`); + const response = await window.apiCall(`${window.API}/workers`); workersData = Array.isArray(response) ? response : (response.data || []); console.log(`βœ… μž‘μ—…μž ${workersData.length}λͺ… λ‘œλ“œ μ™„λ£Œ`); return workersData; @@ -196,7 +206,7 @@ async function loadWorkers() { async function loadWorkData(date) { try { console.log(`πŸ“‹ ${date} μž‘μ—… 데이터 λ‘œλ”©...`); - const response = await apiCall(`${API}/daily-work-reports?date=${date}&view_all=true`); + const response = await window.apiCall(`${window.API}/daily-work-reports?date=${date}&view_all=true`); workData = Array.isArray(response) ? response : (response.data || []); console.log(`βœ… μž‘μ—… 데이터 ${workData.length}건 λ‘œλ“œ μ™„λ£Œ`); return workData; @@ -509,11 +519,5 @@ function showToast(message, type = 'info', duration = 3000) { // ========== μ „μ—­ ν•¨μˆ˜ (HTMLμ—μ„œ 호좜) ========== // window.loadDashboardData = loadDashboardData; window.showToast = showToast; - -// ========== 내보내기 ========== // -export { - loadDashboardData, - showToast, - updateSummaryCards, - displayWorkers -}; +window.updateSummaryCards = updateSummaryCards; +window.displayWorkers = displayWorkers; diff --git a/web-ui/pages/dashboard/group-leader.html b/web-ui/pages/dashboard/group-leader.html index d2dfdd4..2be714c 100644 --- a/web-ui/pages/dashboard/group-leader.html +++ b/web-ui/pages/dashboard/group-leader.html @@ -12,8 +12,7 @@ - - +