nextJS

ยท Project
4์›” ํ•œ ๋‹ฌ ๋™์•ˆ ๋ฒ ํƒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ธํŒ…ํ•˜๊ณ  ๋ฐฐํฌ๊นŒ์ง€ ๋งˆ๋ฌด๋ฆฌํ–ˆ๋‹ค. โœ๏ธ ํ”„๋กœ์ ํŠธ ์š”๊ตฌ์‚ฌํ•ญ์›น ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์›น UI ๋‚ด์—์„œ ์นด๋ฉ”๋ผ๋ฅผ ํ†ตํ•ด ์‚ฌ์ง„ ์ดฌ์˜์นด์นด์˜ค ๋งต์ด๋‚˜ ๊ตฌ๊ธ€๋งต์ด ์•„๋‹Œ ์ž์ฒด ์ œ์ž‘ํ•œ ์ง€๋„ ์ด๋ฏธ์ง€ ์œ„์— ํ•€์œผ๋กœ ์œ„์น˜๋ฅผ ํ‘œ์‹œํŠน์ • ์œ„์น˜์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ ์ž‘์„ฑ ๋ฐ ์ข‹์•„์š” ๊ธฐ๋Šฅ์‚ฌ์šฉ์ž ํ™œ๋™ ๋ถ„์„์„ ์œ„ํ•œ Mixpanel ์—ฐ๋™๐Ÿค” ์›น์—์„œ ์นด๋ฉ”๋ผ ์ดฌ์˜์ด ๋œ๋‹ค๊ณ ?์ฒ˜์Œ์—๋Š” ์›น UI์•ˆ์—์„œ ์นด๋ฉ”๋ผ ์ดฌ์˜์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑด๊ฐ€ ํ–ˆ๋‹ค..? ์ฐพ์•„๋ณด๋‹ˆ ๊ฐ€๋Šฅํ–ˆ๊ณ  ๋‚˜๋Š” react-webcam์„ ํ™œ์šฉํ•ด์„œ ๊ตฌํ˜„ํ–ˆ๋‹ค.์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด ์นด๋ฉ”๋ผ ํ™”๋ฉด์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค.๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ‘œ์ค€ Web API์ธ navigator.mediaDevices.getUserMedia()๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉ์ž์˜ ์นด๋ฉ”๋ผ ์ŠคํŠธ๋ฆผ(strea..
Google Cloud 1. Google API Console์—์„œ ์ƒˆ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ Google API Console ๋กœ ๋“ค์–ด๊ฐ€ ๋กœ๊ทธ์ธ ํ›„ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค. 2. OAuth ๋™์˜ ํ™”๋ฉด ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋“ค์–ด๊ฐ€๊ธฐ API ๋ฐ ์„œ๋น„์Šค ํด๋ฆญ! OAuth ๋™์˜ ํ™”๋ฉด์—์„œ User Type์€ ์™ธ๋ถ€๋กœ ์„ค์ •ํ•ด ์ค€๋‹ค.(์™ธ๋ถ€๋กœ ์„ค์ •ํ•ด์•ผ google ๊ณ„์ •์ด ์žˆ๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.) ์•ฑ ๋“ฑ๋ก ์ˆ˜์ • - OAuth ๋™์˜ ํ™”๋ฉด์—์„œ๋Š” * (๋ณ„ํ‘œ์‹œ, ํ•„์ˆ˜)๋งŒ ์ž…๋ ฅํ•ด์ฃผ๊ณ  ๋„˜์–ด๊ฐ”๋‹ค ๋ฒ”์œ„๋Š” userinfo.email, userinfo.profile์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋์ด๋‹ค! OAuth ๋™์˜ ํ™”๋ฉด ์™„์„ฑ! 3. ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด - OAuth ํด๋ผ์ด์–ธํŠธ ID OAuth ํด๋ผ์ด์–ธํŠธ ID๋ฅผ ์ƒ์„ฑ..
react-quill์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ react-quill์„ ์•„๋ž˜์ฒ˜๋Ÿผ static import๋ฅผ ํ•˜๋‹ˆ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. import ReactQuill from 'react-quill' import EditorToolbar from '../toolbar/EditorToolbar' โจฏ node_modules/quill/dist/quill.js (7661:11) @ document โจฏ ReferenceError: document is not defined ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ ๋Š” react-quill๊ฐ€ ๋กœ๋“œ๋˜๋Š” ์‹œ์ ์— document๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. dynamic import๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ์„ ๋™์ ์œผ๋กœ import ํ–ˆ๋‹ค. dynamic import๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด react-quill์„ ์„œ๋ฒ„ ์ธก ๋ชจ๋“ˆ์— ํฌํ•จํ•˜..
CORS ์—๋Ÿฌ ๋ฐœ์ƒ์˜ค๋Š˜๋„ ์–ด๊น€์—†์ด CORS์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฅผ ์ฐพ์•„์™”๋‹ค..ใ…Žใ…Ž ์—๋Ÿฌ์˜ ์›์ธhttp://localhost:3000(ํ”„๋ก ํŠธ)์—์„œ https://www.test.co.kr(๋ฐฑ์•ค๋“œ)๋กœ ์š”์ฒญ์„ ๋‚ ๋ ค์„œ๋กœ ๋‹ค๋ฅธ Origin์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ธŒ๋ผ์šฐ์ €์—์„œ SOP(๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…)์— ์˜ํ•˜์—ฌ ์ฐจ๋‹จํ•œ ๊ฒƒ์ด๋‹คaxios.get('https://www.test.co.kr/api/item/diver.gate.php', { params: { searchType: 'REVIEW', sortOption: 'UPDATE', caType: 1, displaySize: 10, },}) CORS๋ž€?CORS(Cross-Origin Resource Sharing)๋Š” ๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ  ์ •์ฑ…์ด๋‹ค ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€..
์†”B
'nextJS' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก