묻고 답해요
148만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
@types/loadable__component module not found error 도와주시면 감사하겠습니다.!
에러해결 시도현황 (하단에 npm list 첨부했습니다.)생각한 원인node_moduels\@loadable\component 의 경로로 탐색을 하는 상황인데 npm i @types/loadable__component 결과로 다운받은 모듈의 위치는 @types 디렉토리아래 존재하는 상황이므로 노드가 경로를 못찾나? 라고 생각했습니다.=> 첫 시도에러 상황: module not fount 상황으로 @types directory 를 찾지 못해 생긴 문제로 생각했습니다.에러 메시지vscode 상황브라우저 상황=> @types 를 추가해 경로를 고쳐봤습니다. 마우스를 올리면 이런식으로 나오는데, 브라우저에서는 module not found 가 나옵니다.브라우저 상황=> 두 번째 시도에러 추론.. webpack 문제?잘은 모르지만, webpack config에 @loadable 을 추가해봐도 해결이 안됩니다. => @loadable 이 없는 상황에도 에러가 납니다. => @loadbale resolve argument 로, (__dirname, '@types') 에러납니다. (import loadable from '@loadable/component' 상황입니다.) => @loadable resolve argument 로, (__dirname, '@types/loadable__component') 에러납니다. (import loadable from '@loadable/component' 상황입니다.) 두 번째 시도의 에러 첨부본 모두 vscode 를 재부팅후 npm run dev를 실행한 결과입니다. ref) => npm list
-
미해결Slack 클론 코딩[실시간 채팅 with React]
? 연산자
아래의 코드에서 다음과 같은 에러가 나타납니다 {member.id === userData?.id && <span> (나)</span>}"'false | IUser' 형식에 'id' 속성이 없습니다.'false' 형식에 'id' 속성이 없습니다.",userData?.id는 userData가 존재할때만 id property에 접근하고, userData가 false면 접근하지 않는 것으로 알고 있는데, 왜 저러한 오류가 나타나는지 의문입니다.이전에도 error.response?.data 같은 문법을 많이 썼는데, 왜 저게 오류인지 의문입니다.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Window 세팅중 오류사항
도저히 모르겠습니다. 어제오늘 시간 다 날렸네요^^;
-
미해결Slack 클론 코딩[실시간 채팅 with React]
mutate, revalidate
4: 48 mutate 대신 revalidate를 사용하셨는데revalidate가 지금은 사용하지 않는 단어라서 지금까지 mutate로 대체해서 사용했어요제로초님처럼 로그인 했을 때 에러가 나진 않는데 바꾸지 않아도 되나요??
-
해결됨[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
enum 타입으로 한글 사용하기
안녕하세요, 선생님.현재 에어코리아에서 제공하는 DB 정보들이 현재 강의와 달라서 제 나름대로 수정하여 듣고 있는데... 혹 enum에 한글 데이터를 집어 넣을 수 있는 방법이 있을까요? sidoname값은 모두 한글입니다.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
CustomScrollView 강의 문의
안녕하세요. 제가 Scrollable Widgets 부분까지 수강하다가 궁금한 점이 생겨서 질문드립니다. CustomScrollView 강의 첫 부분을 보면한 화면에서 두 개의 List Widget을 한번에 스크롤하기 위해서는 CustomScrollView을 사용해야 한다고 하셨는데 해당 내용에 대한 강의는 없는 것 같아서요~ 혹시 미세먼지 앱 강의에서 해당 내용이 다뤄지는 건가요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
WebView 실행 시 빈화면
안녕하세요.WebView 실행 시 시뮬레이터가 빈화면으로만 나옵니다.그래서 블로그 말고 m.naver.com으로 하면 네이버 화면은 나오는데, 블로그만 뜨질 않습니다.구글링을 해서 플러그인도 써보았지만 안되서 방안을 요청드립니다. 해결방안이 있을까요? 원격지원도 가능하실까요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
이미지 관련 질문
질문하기에 앞서 너무 친절한 답변 감사드립니다.강의를 듣는도중에 이미지 관련해서 절대 배포하면 안된다고 하셨는데 깃허브에 올려도 안되는걸까요..?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
socket 연결된 것 같은데 네트워크 창
소켓이 연결 되어 DM 메시지에 초록 동그라미도 보이는데,12:44 초에 네트워크 창 보시면?EIO 라고 시작되는 네트워크 네임이 없고, 프로토콜도 http/1.1 만 나오고 websocket이라는 단어가 뜨는 부분이 없어요이건 연결이 안된건가요....??? 5:35초 부터 네트워크에 빨간 에러도 안뜨고 저 네임이 안들어갔었습니다.소켓 연결이 된 것 같은데 안떠서 헷갈리네요
-
미해결애플 웹사이트 인터랙션 클론!
선생님 이해가 잘 안가는 문구가 있어서 질문 드립니다.
setLayout 함수 끝에 들어가는${sceneInfo[i].scrollHeight}px;부분에서 따옴표로 잘못 작성해서 좀 해맸었습니다 ㅎㅎ;${}부분을 풀어 쓰면 정확하게 어떤식으로 표기가 되는건지.. 궁금합니다.제 예상으로는 for문 안에 따로 변수를 선언하지 않고, 계산된 값을 바로 가져오기 위해 사용한 것 같은데 맞을까요..??
-
해결됨[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
질문
OOP 강의에서 상속 공부하던 중 의문이 생겨 질문 드립니다.void main() { print('-------------Idol-------------'); Idol apink = Idol(name: "에이핑크", members_count: 5); apink.say_name(); apink.say_members_count(); // apink.say_male(); - 이건 X print('-------------boy_group-------------'); boy_group bts = boy_group('bts',7); bts.say_name(); bts.say_members_count(); bts.say_male(); print('-------------girl_group-------------'); girl_group red_velvet = girl_group('Red Velvet',5); red_velvet.say_name(); red_velvet.say_members_count(); red_velvet.say_female(); print('-------------type_comparison-------------'); print(apink is Idol); print(apink is boy_group); print(apink is girl_group); print('-------------type_comparison2-------------'); print(bts is Idol); print(bts is boy_group); print(bts is girl_group); print('-------------type_comparison3-------------'); print(red_velvet is Idol); print(red_velvet is boy_group); print(red_velvet is girl_group); } // 상속 - inheritance // // 상속을 받으면, 부모 클래스의 모든 속성을 자식 클래스가 부여받는다. class Idol { //이름 String name; //멤버 숫자 int members_count; Idol({ required this.name, required this.members_count, }); void say_name() { print("저는 ${this.name}입니다."); } void say_members_count() { print("${this.name}은 ${this.members_count}명의 멤버가 있습니다."); } } // super가 부모를 의미하는! class boy_group extends Idol { boy_group( String name, int members_count, ) : super( name: name, members_count: members_count, ); // 밑의 super(~~) 이것이 Idol(~~) 을 의미하는 것임! 즉, 부모의 constructor 의미하는 것! void say_male(){ print("저는 남자아이돌입니다"); } } class girl_group extends Idol { girl_group( String name, int members_count, ) : super( name: name, members_count: members_count, ); // 밑의 super(~~) 이것이 Idol(~~) 을 의미하는 것임! 즉, 부모의 constructor 의미하는 것! void say_female(){ print("저는 여자아이돌입니다"); } }여기에서는 name : name을 함으로써, 자식 class에서 받은 name을 부모 class의 name으로 복사해준다/넣어준다고 하셨는데, 그 다음 코드void main() { TimesTwo tt = new TimesTwo(2); print(tt.calculate()); TimesFour tf = new TimesFour(2); print(tf.calculate()); } // method : function인데, class 내부에 있는! // override - 재정의 (우선시하다. 덮어쓰다) class TimesTwo { final int number; TimesTwo( this.number, ); //method int calculate() { return number * 2; } } class TimesFour extends TimesTwo { TimesFour( int number, ) : super(number); // @override //생략해도 되는데, 예의상 기입한다. int calculate() { // return super.number * 4; return super.calculate() * 2; // 이것도 가능! } } 이 내용을 보면, 부모class는 그냥 number인 것이 왜 그런 것이지 잘 이해가 안 됩니다. number:number가 아닌 이유가 어떤 것일까요?? named(required)의 여부가 이를 결정한 것일까요??
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Failed to reformat code 오류
HomeScreen(), 할때 대문자 S가 입력이 안되고 Failed to reformat code 해당 오류가 발생됩니다ㅜㅜ찾아봐도 안나오네요..
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
flutter doctor 실행시 다름 ㅠㅠㅠ
flutter doctor 실행 했을때 이렇게 나옵니다.2번째꺼는 저기서 말한 가이드 대로 flutter doctor --android-licenses이렇게 나와요...ㅠㅠㅠ그리고 마지막 [!] Android Studio (version 2022.1) ✗ Unable to find bundled Java version. 이부분은 어떻게 해결해야할지 모르겠습니다. ㅠㅠㅠㅠ
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
로그아웃 후에도 계속 쿠키가 존재합니다.
안녕하세요! 로그아웃 후 계속 auth/me후 계속 req에서 쿠키가 존재해서 문의 남깁니다! application탭에서 쿠키는 잘 삭제가 되고 네트워크 탭에서도 logout이 성공적으로 이루어지는데 reload하면 바로 auth/me가 계속 200코드와 함께 user가 전달됩니다. 콘솔에도 찍어봤는데 계속 req에 쿠키가 같이 전달되고 있어서 요. 서버도 껐다 켜보고 했는데도 계속 그래서 문의드립니다!client/src/context/auth.tsxclient/src/components/NavBar.tsxserver/src/middlewares/auth.tsserver/src/routes/auth.ts
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
카메라 위치 애니메이션으로 이동하기 수강중 질문
똑같이 따라 했는데IconButton에서 mapController 사용 시빨간줄이 뜹니다 ㅠㅠ왜이런가요?
-
해결됨[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
질문!
Idol blackpink = new Idol( ~~~ )Idol blackpink = Idol( ~~ )이렇게 둘 다 가능하다는 내용을 보았습니다.const생성자를 적용시킬 경우, 후자는 const Idol( )을 하면 error가 발생하지 않는데, 전자의 경우에는 new const Idol( ) 을 해도, const new Idol()을 해도 error가발생하는데 어떻게 해야 할까요? 후자의 경우에는?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
selectedDayPredicate 인자인 date를 이해하지 못하겠습니다.
selectedDayPredicate: (DateTime date) { print('Date 정체 ${date}${date.hour}'); if (selectedDay == null) { return false; } return date.year == selectedDay!.year && date.month == selectedDay!.month && date.day == selectedDay!.day; },date가 갑자기 인자로 들어와서이게 무슨 값인지 잘 몰라 프린트를 해보니'Date 정체'로 해서 34개의 날짜가 프린트 됩니다.date 값이 어떻게 들어가는 걸가요?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
code-server 사용시 react-router-dom 오류
안녕하세요개발환경으로 code-server을 사용하고 있는데, 문제를 도대체 알 수 없어서 질문 올립니다 ㅜㅜㅜㅜㅜㅜcode-server은 실행시 도메인/proxy/port로 실행 주소가 설정됩니다.그래서 hot-reload 웹소켓 연결을 설정하기위해서 webpack.config.ts에client: { webSocketURL: 'ws://0.0.0.0:443/proxy/3090/ws', },를 추가했습니다.index.html에서 src = "./dist/app.js"로 했습니다다른 모든 코드는 setting/ts를 그대로 npm i 했습니다.(여기까지 사전 참고내용) 이전 강의에서 App.tsx에 <div>코드어쩌구저쩌구</div>는 잘 나타났습니다.이번 강의에서 react-router-dom을 도입해서 code-server에서 실행을 하게되면 브라우저에 아무런 화면이 나오지 않습니다. 그러나, code-server가 아닌 구름ide에서 같은 파일을 실행할 경우(서버 주소가 proxy가 아니게됨)정상적으로 동작합니다. react-router-dom을 사용했더니 화면이 안보이기때문에 react-router-dom 과 관련된 문제라고 추측합니다.code-server에서 실행주소뒤에 'proxy/3090'이 붙었을때 문제가 생겼기 때문에 code-server 관련 문제로 추측됩니다.code-server사용시 가져온 파일이랑 구름ide사용시 가져온 파일 비교해보면, code-server에서 파일2개를 못 가져온것 같은데, 이게 문제인거 같기도 합니다. 또한, App.tsx에서 react-router을 빼고 다음과 같이 입력후 실행해보았습니다.import React from 'react'; import loadable from '@loadable/component'; import { Switch, Route, Redirect } from 'react-router-dom'; import SignUp from '@pages/SignUp'; const App = () => { return <SignUp />; }; export default App; 가져온 파일 목록은 다음과 같고, 정상적으로 signup화면이 나타납니다.이번에는 loadable/component가 문제인가 싶어서, 이걸빼고 다음과 같이 App.tsx를 입력했습니다.import React from 'react'; import loadable from '@loadable/component'; import { Switch, Route, Redirect } from 'react-router-dom'; import LogIn from '@pages/LogIn'; import SignUp from '@pages/SignUp'; const App = () => { return ( <Switch> <Route path="/login" component={LogIn} /> <Route path="/signup" component={SignUp} /> </Switch> ); }; export default App;그랬더니 이전과 같이 화면에 아무것도 안나옵니다. 도대체 뭐가 문제인지를 모르겠네요 ㅜㅜㅜ
-
미해결Slack 클론 코딩[실시간 채팅 with React]
DMList - NavLink 태그
NavLink 사용시, onClick에서 에러가 발생합니다(property) onClick?: React.MouseEventHandler<HTMLAnchorElement> | undefinedType 'void' is not assignable to type 'MouseEventHandler<HTMLAnchorElement> | undefined'.ts(2322)index.d.ts(1448, 9): The expected type comes from property 'onClick' which is declared here on type 'IntrinsicAttributes & NavLinkProps<unknown> & RefAttributes<HTMLAnchorElement>'이런 에러가 발생하였습니다.그래서 인터넷에 검색하니까onClick={()=>resetCount(member.id)}이렇게 바꿔주면 된다고 해서 바꿔줬더니 오류가 사라졌습니다.제로초님께서는 에러가 없었는데 저만 이 오류가 나타나는 이유가 뭘까요??// import EachDM from '@components/EachDM'; // import useSocket from '@hooks/useSocket'; import { CollapseButton } from '@components/DMList/styles'; import { IDM, IUser, IUserWithOnline } from '@typings/db'; import fetcher from '@utils/fetcher'; import React, { FC, useCallback, useEffect, useState } from 'react'; import { useParams } from 'react-router'; import { NavLink } from 'react-router-dom'; import useSWR from 'swr'; interface Props { userData?: IUser; } const DMList: FC<Props> = ({ userData }) => { const { workspace } = useParams<{ workspace?: string }>(); const { data: memberData } = useSWR<IUserWithOnline[]>( userData ? `/api/workspaces/${workspace}/members` : null, fetcher, ); // const [socket] = useSocket(workspace); const [channelCollapse, setChannelCollapse] = useState(false); const [countList, setCountList] = useState<{ [key: string]: number }>({}); const [onlineList, setOnlineList] = useState<number[]>([]); const toggleChannelCollapse = useCallback(() => { setChannelCollapse((prev) => !prev); }, []); const resetCount = useCallback((id) => { setCountList((list) => { return { ...list, [id]: 0, }; }); }, []); const onMessage = (data: IDM) => { console.log('dm왔다', data); setCountList((list) => { return { ...list, [data.SenderId]: list[data.SenderId] ? list[data.SenderId] + 1 : 1, }; }); }; useEffect(() => { console.log('DMList: workspace 바꼈다', workspace); setOnlineList([]); }, [workspace]); // useEffect(() => { // socket?.on('onlineList', (data: number[]) => { // setOnlineList(data); // }); // console.log('socket on dm', socket?.hasListeners('dm'), socket); // return () => { // console.log('socket off dm', socket?.hasListeners('dm')); // socket?.off('onlineList'); // }; // }, [socket]); return ( <> <h2> <CollapseButton collapse={channelCollapse} onClick={toggleChannelCollapse}> <i className="c-icon p-channel_sidebar__section_heading_expand p-channel_sidebar__section_heading_expand--show_more_feature c-icon--caret-right c-icon--inherit c-icon--inline" data-qa="channel-section-collapse" aria-hidden="true" /> </CollapseButton> <span>Direct Messages</span> </h2> <div> {!channelCollapse && memberData?.map((member) => { const isOnline = onlineList.includes(member.id); const count = countList[member.id] || 0; return ( <NavLink key={member.id} activeClassName="selected" to={`/workspace/${workspace}/dm/${member.id}`} onClick={resetCount(member.id)} > <i className={`c-icon p-channel_sidebar__presence_icon p-channel_sidebar__presence_icon--dim_enabled c-presence ${ isOnline ? 'c-presence--active c-icon--presence-online' : 'c-icon--presence-offline' }`} aria-hidden="true" data-qa="presence_indicator" data-qa-presence-self="false" data-qa-presence-active="false" data-qa-presence-dnd="false" /> <span className={count > 0 ? 'bold' : undefined}>{member.nickname}</span> {member.id === userData?.id && <span> (나)</span>} {count > 0 && <span className="count">{count}</span>} </NavLink> ); // return <EachDM key={member.id} member={member} isOnline={isOnline} />; })} </div> </> ); }; export default DMList; +)그리고 강의 코드와 깃헙에 있는 코드가 부분적으로 다른 부분이 있는데 븥여넣을 때마다 동영상을 정지시키고 코드를 다시 작성해야해서 조금 번거로운 부분이 있는 것 같아요ㅜㅜ
-
해결됨[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Future / async - await
안녕하세요, 선생님.기초적인 것 같은데 이해되지 않는 부분이 있어 질문드립니다.다트 공식문서상에 있는 예제입니다. void main(){ print(createOrderMessage()); } String createOrderMessage() { var order = fetchUserOrder(); return 'Your order is $order'; } Future<String> fetchUserOrder() async { return await Future.delayed(const Duration(seconds: 2), () => 'Large Latte'); } 결과:Your order is Instance of 'Future<String>'로직적으로 해석를 시도해보았고 다른 예제들도 실행하면 잘 되는데..이 예제만 궂이 main함수에 Future를 집어 넣어주야 'Large Latte'를 받을 수 있다는게 ....기본 강의를 돌려보아도 이해가 되지 않는데...좀 상세히 설명 해 주실 수 있을까요?