inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

코드에 대한 질문이 잇습니다.

미해결

Slack 클론 코딩[실시간 채팅 with React]

강의를 전부 진행한지 시간이 좀 된 상태에서 프로젝트 리팩토링중 이해가 안되는 부분이 있어 질문드립니다. 아래 의문점에 대해 확인과 의견을 부탁드립니다. 작성된 코드는 제로초님의 front / nest-typeorm 에서 가져온 코드입니다. 의문점 : 채팅 데이터 전송에 웹소켓이 역할을 하지 않는것 같다. 그렇게 생각한 근거 : 1-1 : useSocket을 이용해서 소켓에 연결하는데 ws-${workspace} 의 message에 onMessage 함수를 연결하고 있다 const Channel = () => { const [socket] = useSocket(workspace); useEffect(() => { socket?.on('message', onMessage); return () => { socket?.off('message', onMessage); }; }, [socket, onMessage]); } const useSocket = (workspace?: string): [Socket | undefined, () => void] => { const disconnect = useCallback(() => { if (workspace && sockets[workspace]) { console.log('소켓 연결 끊음'); sockets[workspace].disconnect(); delete sockets[workspace]; } }, [workspace]); if (!workspace) { return [undefined, disconnect]; } if (!sockets[workspace]) { sockets[workspace] = io(`${backUrl}/ws-${workspace}`, { transports: ['websocket'], }); console.info('create socket', workspace, sockets[workspace]); sockets[workspace].on('connect_error', (err) => { console.error(err); console.log(`connect_error due to ${err.message}`); }); } return [sockets[workspace], disconnect]; }; 1-2 : 백엔드에서 채팅을 수신받는 createWorkspaceChannelChats는 ws-${url}-${chatWithUser.ChannelId} 의 message에 받아온 채팅을 보내고 있다. async createWorkspaceChannelChats( url: string, name: string, content: string, myId: number, ) { const channel = await this.channelsRepository .createQueryBuilder('channel') .innerJoin('channel.Workspace', 'workspace', 'workspace.url = :url', { url, }) .where('channel.name = :name', { name }) .getOne(); const chats = new ChannelChats(); chats.content = content; chats.UserId = myId; chats.ChannelId = channel.id; const savedChat = await this.channelChatsRepository.save(chats); const chatWithUser = await this.channelChatsRepository.findOne({ where: { id: savedChat.id }, relations: ['User', 'Channel'], }); this.eventsGateway.server // .of(`/ws-${url}`) .to(`/ws-${url}-${chatWithUser.ChannelId}`) .emit('message', chatWithUser); } 2 : 네트워크 탭의 웹소켓 메시지에 채팅내역 수신내역이 남지 않는다 이미지가 보일지는 모르겟지만 빨간 박스가 새로 전송한 채팅이고 정상적으로 수신받으면 네트워크 탭에 messag에 내역이 남아야 하는걸로 알고 있는데 남지 않는걸로 확인됩니다. 3 : 웹페이지에서 포커스를 유지한 상태로 모바일에서 입력시 채팅이 전송되지 않음 왜 채팅이 정상적으로 전송된거 처럼 보일까 생각해보니 swr이 브라우저를 포커스 아웃후 재 포커스하면 채팅데이터를 다시 가져오는걸로 추측하여 웹페이지 포커스 유지중 모바일로 테스트해보니 채팅이 전송되지 않습니다.

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
최석우 댓글 1 좋아요 1 조회수 431

MentionsTextarea 와 autoSize 사이 버그가 하나 있습니다.

해결됨

Slack 클론 코딩[실시간 채팅 with React]

MentionsTextarea 에 ctrl+c ctrl+v 를 이용하여 값을 입력시 사이즈는 조절되나 글자 줄 수가 잘려서 보이는 버그가 있습니다. MentionsTextarea 을 사용시 실제보이는 textarea와 보이지 않는 span 영역이 생성되는데 이 중 autosize에 span ref만 넘어가서 span영역만 커지고 textarea의 영역은 유지되서 생기는 버그로 보입니다. 이후 글자를 제거 하거나 추가로 입력시 정상적으로 보이게 됩니다.

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
최석우 댓글 1 좋아요 0 조회수 385

WebSocket 연결 에러 질문

미해결

Slack 클론 코딩[실시간 채팅 with React]

import { useCallback } from 'react'; import io from 'socket.io-client'; // 아무 key값이 들어올수 있으니 이런 형식으로 타입 지정 const sockets: {[key: string]: SocketIOClient.Socket} = {}; const backUrl = "http://localhost:3095"; const useSocket = (workspace?: string): [SocketIOClient.Socket | undefined, () => void] => { const disconnect = useCallback(() => { if(workspace) { sockets[workspace].disconnect(); // 연결 끊을때는 지우기 delete sockets[workspace]; } },[workspace]) if(!workspace) { // 한번 맺었던 연결을 끊는 함수 (끝맺음을 잘하자) return [undefined, disconnect]; } sockets[workspace] = io.connect(`${backUrl}/ws-${workspace}`,{ transports: ['websocket'], }); return [sockets[workspace], disconnect] } export default useSocket; const [socket, disconnect ] = useSocket(workspace); useEffect(()=>{ if(channelData && userData){ socket?.emit("login",{id : userData.id, channels: channelData.map((y)=> y.id)}); } },[userData, channelData, socket]); // socket연결을 끊어줄 때 useEffect(()=>{ return () => { disconnect(); } },[workspace, disconnect]) 버전이 달라서 이런 현상이 생기는건지 잘 모르겠습니다. ..

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
복실묘 댓글 1 좋아요 0 조회수 381

TS1261: Already included file name

해결됨

Slack 클론 코딩[실시간 채팅 with React]

The file is in the program because: TS1261: Already included file name 'C:/Users/gram15/Desktop/slack/sleact-master/alecture/pages/LogIn/index.tsx' differs from file name 'C:/Users/gram15/Desktop/slack/sleact-master/alecture/pages/Login/index.tsx' only in casing. Imported via '@pages/LogIn' from file 'C:/Users/gram15/Desktop/slack/sleact-master/alecture/layouts/App.tsx' Root file specified for compilation 2 | import loadable from '@loadable/component'; 3 | import { Switch, Route, Redirect } from 'react-router-dom'; > 4 | const LogIn = loadable(() => import('@pages/LogIn')); | ^^^^^^^^^^^^^^ 5 | const SignUp = loadable(() => import('@pages/SignUp')); 6 | 7 | const App = () => { App.tsx import React from 'react'; import loadable from '@loadable/component'; import { Switch, Route, Redirect } from 'react-router-dom'; const LogIn = loadable(() => import('@pages/LogIn')); const SignUp = loadable(() => import('@pages/SignUp')); const App = () => { return ( <Switch> <Redirect exact path='/' to="/login" /> <Route path="/login" component={LogIn} /> <Route path="/signup" component={SignUp} /> </Switch> ); }; export default App; LogIn/index.tsx import React from "react"; const LogIn = () => { return ( <div>로그인</div> ); }; export default LogIn; SignUp/index.tsx import React from "react"; const SignUp = () => { return ( <div>회원가입</div> ); }; export default SignUp; 폴더 이름이 맞지 않다고 하는데 이름 대소문자 까지 다 맞춰서 했습니다. 오류가 왜 뜨는지 모르겠어요....

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
sujeonggang42 댓글 1 좋아요 0 조회수 978

백엔드 세팅후 서버 구동시 CORS에러

해결됨

Slack 클론 코딩[실시간 채팅 with React]

안녕하세요 제로초님! 백엔드 서버 구동을 하고 주소창에 경로를 입력하여 띄웠을때 오류가 나서 질문드립니다 우선 프로젝트를 클론을 받아 back폴더로 이동후 리드미에 적힌대로 세팅을 진행하였고 아래캡쳐와 같이 스키마와 테이블이 잘 생성이 된 것을 확인했습니다. 그런데 주소창에 경로를 입력해서 화면이 떴을때 아래캡쳐와 같이 에러가 발생하였습니다. 확인을 해보니 요청 주소가 https://sleact.nodebird.com/api/users 여기로 가는데 코드의 어떤 부분을 수정해주어야 하는걸까요? 이전에 다른분께서 저와 같은 에러가 발생하여 제로초님이 답변하시기를 프론트의 코드를 수정하면 된다고 하셨는데, 백엔드만 실행했는데 이런 문제가 발생하는 이유가 궁금합니다. 클론받은 back폴더 내에서 전체검색으로 http://sleact.nodebird.com 키워드로 검색한 결과 public/dist 경로안의 파일 838.js와 app.js 에서 defaults.baseURL의 경로로 되어있는것을 확인했습니다. 제로초님께서 프로젝트를 만들고 프론트와 연동을 했을때 남은 결과물 인것같아서 아래 캡쳐본에 있는 dist안에서 빌드?된 결과물을 삭제한 뒤 다시 실행을 시켜보면 되지않을까 했는데 백엔드에서 빌드를 어떻게 해야하는것일까요?

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
이지은 댓글 1 좋아요 0 조회수 647

SignUp 의 index.tsx질문

미해결

Slack 클론 코딩[실시간 채팅 with React]

setting/ts 를 복사해 사용중 이고, pages/SignUp/index.tsx는 기존 repository 를 복사해서 사용하는게 맞나요? run dev 실행시 ERROR in ./pages/Login/index.tsx:10:24 TS2339: Property 'revalidate' does not exist on type 'SWRResponse<any, any, any>'. 8 | 9 | const LogIn = () => { > 10 | const { data, error, revalidate, mutate } = useSWR('/api/users', fetcher); | ^^^^^^^^^^ 11 | 12 | const [logInError, setLogInError] = useState(false); 13 | const [email, onChangeEmail] = useInput(''); ERROR in ./pages/Login/index.tsx:16:6 TS7006: Parameter 'e' implicitly has an 'any' type. 14 | const [password, onChangePassword] = useInput(''); 15 | const onSubmit = useCallback( > 16 | (e) => { | ^ 17 | e.preventDefault(); 18 | setLogInError(false); 19 | axios ERROR in ./pages/SignUp/index.tsx:10:24 TS2339: Property 'revalidate' does not exist on type 'SWRResponse<any, any, any>'. 8 | 9 | const SignUp = () => { > 10 | const { data, error, revalidate } = useSWR('/api/users', fetcher); | ^^^^^^^^^^ 11 | 12 | const [email, onChangeEmail] = useInput(''); 13 | const [nickname, onChangeNickname] = useInput(''); ^ 에러 로그 가 뜹니다

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
Bumgu 댓글 1 좋아요 0 조회수 354

data === undefind 무한로딩 질문

미해결

Slack 클론 코딩[실시간 채팅 with React]

Workspace Login if(data == undefind)는 데이터를 받아오기 전에 undefinde여서 무한 로딩중이 떠서 주석처리해주었고 로그인 후 새로고침시 로그인이 풀려버리는데 강의내용의 실습에서는 로그인이 풀리지않는데 고쳐야 될 부분이 있을까요..?

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
복실묘 댓글 1 좋아요 0 조회수 610

/api/users 질문

미해결

Slack 클론 코딩[실시간 채팅 with React]

안녕하세요 선생님 강의 학습 도중 api에 대해 궁금한게 생겨 질문드려요. 로그인 할 때는 /api/users/login로 axios 요청을 하고 로그인 정보는 /api/users로 받아오는데 처음 공부할 땐 그려려니 하고 넘어갔는데 복습하다보니 login 과 users api가 반환하는 값이 살짝 다르지만 로그인 정보를 반환하는건 비슷하던데 이렇게 설정하신 이유가 있나요? 그리고 만약 로그인 api 요청 시 로그인 정보를 반환한다고 설정한 상황에 axios로 로그인 api요청 후 반환 값을 swr로 같은 api주소를 입력해 저장할 수 있나요? 예를들어 axios.post ('/api/login') ~~ / useSWR('/api/login', fetcher) 이런 식으로요 아직 잘 몰라 사용법이 낯설고 어렵네요..ㅎ 알려주신다면 열심히 배우겠습니다.

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
ifconfig 댓글 1 좋아요 0 조회수 224

import error 질문

미해결

Slack 클론 코딩[실시간 채팅 with React]

터미널에 socket 설치 후 부터 모든 import에 저 에러가 뜨는데 이유를 모르겠습니다 Parsing error: DeprecationError: 'originalKeywordKind' has been deprecated since v5.0.0 and can no longer be used. Use 'identifierToKeywordKind(identifier)' instead

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
키푸 댓글 1 좋아요 0 조회수 1603

react-router-dom 설치 오류 관련 질문 사항입니다!

해결됨

Slack 클론 코딩[실시간 채팅 with React]

안녕하세요. 현재 npm i react-router-dom 으로 설치를 하여 라우터로 페이지 이동을 사용하려고 하는데요 터미널에서 계속 에러가 나서 질문드립니다.. 설치할때 --force, or --legacy-peer-deps 사용해봤지만 전부 아래 에러 나오고 리액트 버전을 낮추려고 npm uninstall react react-dom 를 하고 npm install react@^17.0.2 react-dom@17.0.2 까지 해봤지만 전부 아래 에러가 나옵니다.. 리액트 버전 관련 종속성 문제 인 것 같은데 npm start를 제외한 명령어를 치면 아래 에러가 나오는데 어떻게 해결을 해야 할까요?? 아래 에러 말고 --legacy-peer-deps 이걸 포함해서 명령어를 작성하라고 한 에러도 있어서 항상 그렇게 설치를 해왔지만 아래 에러는 처음입니다.. npm ERR! code EOVERRIDE npm ERR! Override for @types/react@^18.2.20 conflicts with direct dependency npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\gmltn\AppData\Local\npm-cache\_logs\2023-09-01T15_46_00_408Z-debug-0.log package.json { "name": "client", "version": "0.1.0", "private": true, "dependencies": { "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "@types/jest": "^29.5.3", "@types/node": "^20.5.1", "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", "axios": "^1.4.0", "http-proxy-middleware": "^2.0.6", "prop-types": "^15.8.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hook-form": "^7.45.4", "react-icons": "^4.10.1", "react-scripts": "5.0.1", "typescript": "^5.1.6", "web-vitals": "^2.1.4" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": [ "react-app", "react-app/jest" ] }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "overrides": { "@types/react": "^17.0.38" } }

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
dev kim 댓글 1 좋아요 0 조회수 1027

로그아웃시 쿠키 남아있는것 관련 질문

미해결

Slack 클론 코딩[실시간 채팅 with React]

안녕하세요 제로초님! 강의 잘 듣고 있습니다. 다름이아니라 강의 내용대로 따라가면서 무리없이 로그인 로그아웃 동작하도록 만들었는데 현재 상태는 로그아웃을 하게되면 swr을 revalidate 해서 로그아웃을 수행한 상태에서는 유저정보 api를 호출할 수 없으니 undifined가 되어서 그 값으로 페이지 이동을 제어한다 라고 이해를 했는데 혹시 맞을까요? 맞다면 로그아웃 후에도 클라이언트 사이드에 쿠키에 토큰값이 아직 지워지지 않은채로 남아있는데 백엔드에서는 로그인처리가 되었어도 프론트에서 쿠키값을 따로 지워줄 필요는 없는것인지 궁금합니다!

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
주영민 댓글 1 좋아요 0 조회수 328

axios로 api 호출 후, swr로 다시한번 get 요청을 하는 이유가 궁금합니다.

미해결

Slack 클론 코딩[실시간 채팅 with React]

안녕하세요 제로초님 강의 잘 듣고 있습니다. 우선 에러가 발생하여 질문하는 것은 아니구요. axios와 swr을 활용하는 과정에서 의문점이 생겨서 질문을 드렸습니다. axios 로 로그인 api를 호출하게되면 response에 로그인한 유저의 정보를 받을 수 있는데 로그인이 성공한 후 swr을 사용해서 유저 정보 조회 api를 서버에 get요청으로 다시 받아 쓰는 이유가 뭔지 궁금합니다.

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
주영민 댓글 1 좋아요 0 조회수 502

강의 중 <WorkspaceWrapper> 부분을 추가하면 메모리가 초과됩니다.

미해결

Slack 클론 코딩[실시간 채팅 with React]

gravatar를 적용시킨 후 <WorkspaceWrapper> <Workspace>test</Workspace> <Channels> <WorkspaceName>Sleact</WorkspaceName> <MenuScroll>Menu Scroll</MenuScroll> </Channels> </WorkspaceWrapper> 이 부분을 추가해서 저장 후 실행시켰더니 갑자기 메모리 사용량이 폭발적으로 증가해 웹 페이지를 열 수 없다고 나옵니다. 작업 관리자를 켜서 실시간으로 확인해봐도 웹 페이지에서 오류 페이지를 띄울 때 까지 계속 증가하네요. 인터넷에 검색해도 쿠키를 제거하라는 형식적인 답변만 나오고 커뮤니티 게시판에도 이같은 문제를 겪었던 사람이 없어서 질문드립니다. 현재 사용하는 노트북의 RAM은 16기가입니다. 혹시 같은 현상을 겪어보신적 있으신가요?

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
ifconfig 댓글 1 좋아요 0 조회수 354

proxy, cors 관련해서 질문있습니다! (오류 사항은 아닙니다!)

해결됨

Slack 클론 코딩[실시간 채팅 with React]

안녕하세요. 혼자 개인 프로젝트를 하면서 강의를 듣고 있는데 궁금한 점이 생겨서 질문 남깁니다! 현재 projectA 안에 프론트, 백 폴더를 제로초님처럼 만들어놓고 프론트는 react+typescript / 백은 nestjs+typescript 로 전부 설치해놓은 상태입니다. 다만, 이렇게 할 경우 proxy 설정을 프론트에서 해줘야 된다고 하여 아래 처럼 설정을 해당 강의 듣기전에 구글링하여 만들어놨었습니다. 미들웨어 설치 npm i http-proxy-middleware projectA > pront > src > setupProxy.ts const { createProxyMiddleware } = require("http-proxy-middleware"); module.exports = function (app) { app.use( createProxyMiddleware("/api", { target: "http://localhost:3095", changeOrigin: true, }) ); }; package.json // 위에 생략... "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "proxy": "http://localhost:3095/", // 아래 생략... 여기서 궁금한 점이.. proxy를 설정할 때 미들웨어를 설치하여 setupProxy.js 파일을 만들어서 사용하라는 글들을 많이 봐서 그대로 따라하고 파일명만 ts로 변경했었습니다. 이렇게 하니 api를 불러오는 url 부분에 localhost:3095 ~~~ 이 부분을 전부 다 입력해야 에러가 나지 않았고 생략해서 사용하려면 package.json에 proxy 경로를 추가하는 방법밖에는 없는걸까요??(미들웨어 설치 + setupProxy.ts 파일로만 proxy 설정을 해보고 싶었는데 이 경우에는 api url 불러오는 부분에 locallhost~~~... 를 쓸 수 밖에 없는지가 궁금합니다.) 다만.. package.json에 proxy 경로를 넣어놓고 setupProxy.ts 파일의 코드를 지워도 제대로 돌아가더라구요.. setupProxy.ts 파일을 잘 못 만든걸까요? 이때 돌아가는 이유가 package.json의 proxy 경로로만 인식을 한 것 같습니다.. https://www.npmjs.com/package/http-proxy-middleware 마지막으로 위 proxy 설정 파일을 해주면 cors 오류가 발생하지 않는 것 같은데 둘중 하나만 설정을 해주는 것이 맞을까요? 둘다 해줘야 하는건지.. 프론트에서 proxy만 하거나 백에서 cors를 설치하는 방향 둘중에 뭐가 더 나은 방향인지도 궁금합니다! 원래는 아래 cors 설치하고 아래 코드까지 작성 해놨었습니다. main.ts(back 폴더안) import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import cors = require('cors'); async function bootstrap() { const app = await NestFactory.create(AppModule); app.use(cors()); await app.listen(process.env.PORT); console.log(`listening on port ${process.env.PORT}`); } bootstrap();

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
dev kim 댓글 1 좋아요 0 조회수 922

프론트,백엔드도 https적용되었는데 morgan에는 HTTP통신으로 나옵니다. 쿠키 적용이안됩니다.

미해결

Slack 클론 코딩[실시간 채팅 with React]

백엔드를 npm run start로 했을 시 로그인이 안되는 문제가 있습니다. 프론트,백엔드 https적용되어있고 같은 도메인을 쓰고있습니다. app.js에 cookie.secure를 주석처리하면 로그인이 됩니다. 질문드린 이유는 지금 제 프론트 <-> 백엔드가 https 통신이 아닌 것인지 맞다면 왜 cookie.secure를 true로 했을 때 왜 쿠키가 설정이 안되는 것인지 알고싶습니다. -시도한 방법 - domain에 상위도메인 넣어보았는데도 안됩니다 ㅠ 저와 비슷한 상황을 겪은 분의 질문을 보던 중 궁금한 게 있어서 이것도 적어봅니다. https://www.inflearn.com/questions/342672/express-aws-%EB%B0%B0%ED%8F%AC-%ED%9B%84-%EC%84%B8%EC%85%98-%EC%BF%A0%ED%82%A4 여기서 cors는 어떻게 하란걸까요? -아래는 제 상황을 파악하시는데 도움이 될만한 내용을 적어봤습니다.- 아래는 프론트에서 login 요청시 morgan 로그입니다. 프론트 url입니다 => https가 적용되어있습니다. 아래는 백엔드 url을 인터넷주소창에 쳤을 때입니다. 아래는 프론트에서 백엔드로 login 요청했을 때 요청헤더입니다. 아래는 백엔드서버 nginx 설정입니다. Route53 호스팅 영역 설정입니다. app으로 시작하는게 백엔드입니다. (CNAME이런건 그림판으로 지웠습니다.) 가비아에도 서브도메인으로 등록했습니다.

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
백민철 댓글 1 좋아요 0 조회수 596

회원가입할 때 POST요청에 대한 응답이 500에러가 뜹니다.

해결됨

Slack 클론 코딩[실시간 채팅 with React]

다른 질문글들을 살펴보니 .env파일 설정이 안되어 있거나 back 서버를 구동하지 않은 상태에서 에러가 나던데 저는 .env파일과 back서버 모두 구동을 했음에도 에러가 뜹니다. 제가 했던 설정 중 일반적인 설정과 다른 경우는 1장에서 db를 생성하고 만들었을 때 mysql비밀번호가 있음에도 도저히 인식하지 못해 설정파일에 변수명이 아닌 직접 비밀번호를 입력한 경우를 제외하곤 강의에서 설명한 설정 그대로 수행했습니다. 어떤게 문제일까요?

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
ifconfig 댓글 1 좋아요 0 조회수 508

(배포 이슈)webpack 빌드 후 index.html을 열어보았는데 router부분이 실행이 안되는거같습니다..

미해결

Slack 클론 코딩[실시간 채팅 with React]

App.tsx부분입니다. 여기에서 Router부분 주석처리하고 테스트중입니다라는 텍스트만 적어놓고 npm run build 후 생긴 index.html을 클릭하면 아래 이미지처럼 텍스트가 제대로 나오는거까진 확인을 하였습니다. 그런데 텍스트를 지우고 index.html 을 실행하면 화면에 아무것도 나오질 않습니다. 코드대로라면 백엔드와 통신이 안될 땐 로딩중입니다는 텍스트가 떠야하는데 말이죠.. import React, { FC } from 'react'; import './App.css'; import { Router } from '../router'; const App = () => { return ( <div className="App"> <Router /> </div> ); }; export default App; -npm run build 후 App.tsx에 <Router/> 주석 후 테스트중입니다 텍스트 입력 후 index.html 실행 화면 -npm run build 후 App.tsx에 <Router/> 주석 해제 후 index.html 실행 화면 및 네트워크 개발자도구 -npm run dev (정상일 경우 동작해야하는 화면) 제가 이 질문을 드린건 지금 s3에 버킷 생성 후 dist에 있는 폴더를 아래처럼 다 올렸습니다. 그 후 엔드포인트에 접속했는데 아무것도 안 뜨길래 로컬에서 빌드 후 생긴 index.html에 로딩중입니다가 떠야 s3 엔드포인트에 접속했을 때도 로딩중입니다가 뜰 거 같아서 로컬에서 문제를 해결해보고 있습니다. -s3 파일 업로드 화면- 아래는 웹 시작초기에 관련 있는 코드들이라 생각되어 같이 올립니다. client.tsx부분입니다. import 'core-js/stable'; import 'regenerator-runtime/runtime'; import React from 'react'; import { render } from 'react-dom'; import { BrowserRouter } from 'react-router-dom'; import axios from 'axios'; import App from './layouts/App'; axios.defaults.withCredentials = true; axios.defaults.baseURL = process.env.NODE_ENV === 'production' ? 'http://localhost:3095' : 'http://localhost:3095'; render( <BrowserRouter> <App /> </BrowserRouter>, document.querySelector('#app'), ); index.html입니다. <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>주식 캘린더</title> <style> html, body { margin: 0; padding: 0; overflow: initial !important; } body { font-size: 15px; line-height: 1.46668; font-weight: 400; font-variant-ligatures: common-ligatures; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; } * { box-sizing: border-box; } </style> <!-- <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon.png" /> --> </head> <body> <div id="modal"></div> <div id="app"></div> <script src="./dist/app.js"></script> </body> </html> 하루 반나절동안 잡고 있는데도 해결이 안되어서 질문드립니다.. ㅠㅠ... 도와주세요 제발...ㅠㅠㅠㅠ

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
백민철 댓글 2 좋아요 0 조회수 1533

현재 깃허브는 셋팅이 완료되있는 상태인가요?

미해결

Slack 클론 코딩[실시간 채팅 with React]

안녕하세요 선생님 다름 아니라 현재 세팅하기 부분 강의 듣고있는데, 화면과 다른게 제가 클론해온 파일은 alecture 폴더에 셋팅이 다 완료되어있는것같아서 문의드립니다. https://github.com/zerocho/sleact/tree/master 여기서 클론 해왔구요 그러면 현재 셋팅하는 강의는 다 건너뛰고 바로 회원가입 파트로 넘어가면 되는지요?

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
seongwoo91 댓글 1 좋아요 0 조회수 499

Cannot GET / 404 에러 발생하시는분

미해결

Slack 클론 코딩[실시간 채팅 with React]

강의 7:40부근 webpack.config.ts 파일 72번째 라인 devServer: { historyApiFallback: true, // react router port: 3090, devMiddleware: { publicPath: '/dist/' }, static: { directory: path.resolve(__dirname) }, }, 이부분 추가하시면 될것같습니다. static: { directory: path.resolve(__dirname) }

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
Sherry 댓글 1 좋아요 2 조회수 720

프로젝트에 사용할 상태와 로직 관리 라이브러리 훅 사용 질문입니다.

미해결

Slack 클론 코딩[실시간 채팅 with React]

로그인 및 인증,인가(세션,jwt둘다 사용), 게시판(이미지포함), 댓글, 소켓채팅 정도의 기능을 구현하여 테스트 코드와 docker로 띄워서 CI/CD까지 구현하려고 합니다. 상태랑 로직 관리를 useReducer, React Context API, React Query, redux, graphql 정도로 생각하고 있는데 어떤걸로 하는게 좋을까요?!

  • react
  • 웹팩
  • typescript
  • socket.io
  • babel
  • 클론코딩
최영철 댓글 1 좋아요 0 조회수 334

인기 태그

인프런 TOP Writers

주간 인기글