묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
mutate 와 Pessimistic UI, Optimistic UI 관계 질문이요
1번.axios요청후 then으로 처리 : Pessimistic UImutate(data, true) : Optimistic UImutate(data, false) : 데이터를 바꾸는데 서버에 요청 및 점검을 안함. 2번 mutate(data, true) : Pessimistic UImutate(data, false) : Optimistic UI 처음엔 1번으로 이해를 했는데 shouldRevalidate를 false로 넣어서 시도했을 때 주기적으로 GET요청이 되는 직후 바로 로그아웃을 클릭하면 추가적인 요청이 없는데 그냥 로그아웃하면 바로 추가적인 요청이 보내집니다. 주기적으로 GET요청을 하는 것과의 우연의 일치인진 모르겠는데 뭔가 자꾸 추가적인 GET요청이 되었다 안되었다 하더라고요. 그래서 false를 넣어도 점검을 하는 2번인가 싶기도 하고 헷갈립니다. 뭐가 맞는거죠?
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
workspace/channel 새로고침 오류
http://localhost:3090/workspace/channelhttp://localhost:3090/ 로 접근해서 해당 path까지 접근이 잘되지만 이후 새로고침하면 자바스크립트를 불러오지 못하여 에러가 납니다.<body> <div id="app"></div> </body>//에러코드 Rfused to apply style from 'http://localhost:3090/workspace/public/client-boot-styles.min.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled. GET http://localhost:3090/workspace/public/slack-icons-v2-fe043a5.woff2 net::ERR_ABORTED 404 (Not Found) GET http://localhost:3090/workspace/dist/app.js net::ERR_ABORTED 404 (Not Found) Rfused to execute script from 'http://localhost:3090/workspace/dist/app.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled. GET http://localhost:3090/workspace/public/favicon.ico 404 (Not Found) the resource http://localhost:3090/workspace/public/slack-icons-v2-fe043a5.woff2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.제 생각에는 http://localhost:3090/workspace/ router가 없어서 channel까지 오지 못하고 중간에서 끊기는 것 같은데 <Routes> <Route path="/" element={<Navigate to="/signin" replace />} /> <Route path="/signin" element={<SignInPage />} /> <Route path="/signup" element={<SignUpPage />} /> <Route path="/workspace" element={<Navigate to="/workspace/channel" replace />} /> <Route path="/workspace/channel" element={<ChannelPage />} /> </Routes>workapce경로에서 channel로 redirect를 걸어주려고 하는데 잘 되지 않습니다 어떻게 개선하면 좋을까요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
lib 폴더 사라짐
안드로이드 스튜디오에서 프로젝트를 재시작하면 lib 폴더가 사라져있어서 엔트리포인트를 못찾고 있습니다.. 프로젝트 파일 구조에는 있는데프로젝트탭을 누르면 안보이네요 ㅜㅜ
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
정상 작동은 하는데 웹팩 프록시 설정이 없어도 OPTIONS요청이 없어요.
그냥 기존의 백엔드 app.js 코드 그대로 하고 웹팩 데브서버에 프록시 설정을 하지 않고 회원가입 했을 때 201로 요청이 성공했습니다. 하지만 제로초님과 달리 OPTIONS요청이 추가적으로 생기지 않았고 POST요청만 네트워크 창에 보이는데 잘못된게 있는 건가요 아님 시스템 상 뭐가 바뀐건가요? 작동상 문제는 없는데 궁금해서 여쭤봅니다.index.tswebpack.config.tsapp.js
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
맥북 m1 flutter doctor 시 Xcode 에러 메시지 입니다.
Xcode - develop for iOS and macOS (Xcode 14.3) ✗ CocoaPods not installed. CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side. Without CocoaPods, plugins will not work on iOS or macOS. For more info, see https://flutter.dev/platform-plugins To install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
onSaved의 타입
안녕하세요. 중급까지 다 듣긴했는데 프로젝트 중, 폼필드 부분에 복습을 할 필요성이 생겨 돌아와서 보던중 궁금한 점이 생겨서 질문드립니다.onSaved의 타입이 현재의 플러터(3.7.11) 혹은 다트(2.19.6)에서 확인을 해보면 text_form_field.dart에서 내용이 저는 ValueChanged<String?> onFieldSubmitted, super.onSaved, super.validator,로 표기가 됩니다. text_form_field.dart 에서는 FormFieldSetter<String> 에 해당하는 타입이나 문구는 cmd+f를 해서 찾아보아도 나오진 않아요.다만 Form 위젯의 정의에서는 타입데프로 나오긴 하며, 강의에서 처럼 onSaved를 매개변수로 받아 외부에서 입력하도록 했을때 FormFieldSetter<String>로 해도 작동은 하네요.버전이 바뀌며 변경이 있었던 건지 이 부분은 왜 text_form_field.dart에서 찾을 수가 없는지 궁금합니다. 또한 이런 경우 Form위젯을 뒤지지 않고도 적절한 타입을 찾을 수 있는 방법을 알고 싶습니다.감사합니다.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
webview 4.x 버전 했는데 에러가 나네요 ㅜㅜ
webview 4.x 버전으로 수정 했습니다.근데 에러가 발생해서요..계속 영상을 돌려봐도 똑같이 입력 했는데 ㅜㅜ해결책이 필요합니다!!! 도와주세요!!콘솔에 나타난 에러화면이랑소스코드 아래 첨부 드립니다. <소스코드>import 'package:flutter/material.dart'; import 'package:webview_flutter/webview_flutter.dart'; final homeUrl = Uri.parse('https://blog.codefactory.ai'); class HomeScreen extends StatelessWidget { WebViewController controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) ..loadRequest(homeUrl); HomeScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Colors.orange, title: Text('Code Factory'), centerTitle: true, actions: [ IconButton( onPressed: () { controller.loadRequest(homeUrl); }, icon: Icon( Icons.home, ), ), ], ), body: WebViewWidget(controller: controller), ); } }import 'package:flutter/material.dart'; import 'package:web_view_ex/screen/home_screen.dart'; void main() { runApp( MaterialApp( debugShowCheckedModeBanner: false, home: HomeScreen(), ), ); } <에러>
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
쌤 사랑해요❤︎
항상 좋은 강의 감사드려유♡
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
config.js 에서 username값 질문
mysql 실행할 때 프롬프트에서 mysql -h localhost -u root -p 로 입력한 사용자 명이랑 config.js 파일에서의 username값과 일치해야 하나요? 그리고 프롬프트로 들어가지 않고 그냥 MySQL 8.0 Command Line Client 파일을 클릭해서 실행시키면 바로 비번입력하는게 나오던데 이렇게 들어가도 상관없나요?
-
해결됨쉽게 배우고, 포트폴리오로 만드는 반응형 웹! #설화수
a태그 질문!
강사님 lounge에 자세히보기로 이동하는 a태그는 div class: btn-view 태그로 한번 감싸서 사용해했는데 플래그십 스토어 스파에서(강의 4분 34초)는 div로 감싸지 않고 그냥 a태그를 사용하는 이유가 있을까요?? 같은 페이지 이동 버튼인데 div로 한번 더 감싸는 이유가 따로 있는지 궁금합니다!
-
해결됨쉽게 배우고, 포트폴리오로 만드는 반응형 웹! #설화수
질문있습니다!!
10분 40초쯤에 recomm_list li에 중앙 정렬을 위해 padding값을 주는 것 같은데 padding : 34px 35px 0 으로 어떻게 계산되는건지 궁금해요!혹시 다른 방법으로 정렬을 할 수 없을까요??
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Google Map 강의 내용 관련
Google Map 관련된 내용을 학습하고 있는데, 재미있으면 댓글을 남겨주면, 관련된 내용을 좀 더 준비하시겠다고 해서 댓글 남깁니다." 재미 있음 "사용자가 특정 앱을 통해 본인의 위치를 조작할 수 없도록 하는 것에 대해서 코딩 강의를 해 주시면 좋을 것 같습니다.
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
setting/ts에 설정한후 폴더생성 및 추후작업
이전수업을setting/ts에서 따라해보면서쫒아왔는데요!github에서 받은것은 완성본이라고 하셨는데,폴더생성 및 추후 페이지작업 프론트작업도setting/ts에서 진행해도될까해서 질문드립니다.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
알 수 없는 오류가 자꾸 뜹니다.
실행은 잘 되고, 빨간색으로 오류는 없는데, 저장 누르면, 수업과 같이 [Schedule(id~~~000)] 이런 내용에 대한 메시지들이 아닌, 아래와 같은 메시지들이 뜹니다.널첵과 같은 이슈같은데 모든 것을 점검해 봤을때 수업 내용과 다른 부분이 없었습니다. 어떻게 해결해야 할까요?E/flutter (27313): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Null check operator used on a null valueE/flutter (27313): #0 ScheduleBottomSheetState.onSavePressed (package:ui/component/schedule_bottom_sheet.dart:116:33)E/flutter (27313): #1 InkResponseState.handleTap (package:flutter/src/material/inkwell.dart:1096:21)E/flutter (27313): #2 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:253:24)E/flutter (27313): #3 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:627:11)E/flutter (27313): #4 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:306:5)E/flutter (27313): #5 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:276:7)E/flutter (27313): #6 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:163:27)E/flutter (27313): #7 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:464:20)E/flutter (27313): #8 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:440:22)E/flutter (27313): #9 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:336:11)E/flutter (27313): #10 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:395:7)E/flutter (27313): #11 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:357:5)E/flutter (27313): #12 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:314:7)E/flutter (27313): #13 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:295:7)E/flutter (27313): #14 _invoke1 (dart:ui/hooks.dart:164:13)E/flutter (27313): #15 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:361:7)E/flutter (27313): #16 _dispatchPointerDataPacket (dart:ui/hooks.dart:91:31)E/flutter (27313):
-
해결됨Slack 클론 코딩[실시간 채팅 with React]
back 서버 오류
강의 수강중에 에러가 발생했는데, 이를 찾지 못하겠습니다. 회원 가입으로 axios 해서 넘어가는거는 알겠는데... 위의 캡처 긍르 보면 api.js에서 addMembers를 호출하는데 에러가 나고 있습니다. 에러는 Cannot read properties of null (reading 'addMembers')라는데 이 부분에서 에러가 왜 나는지 잘 모르겠습니다. 분명 같은 이메일로 로그인 시도시 "이미 있는 사용자입니다"하는 response를 받고 있는 상황입니다.
-
미해결Slack 클론 코딩[실시간 채팅 with React]
회원가입시 cors 오류 납니다
어느부분을 봐야할까요?
-
미해결Slack 클론 코딩[실시간 채팅 with React]
BrowserRouter 은 JSX 구성 요소로 사용할 수 없습니다.
-코드-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' ? 'https://sleact.nodebird.com' : 'http://localhost:3090'; render( <BrowserRouter> //오류발생구간 <App /> </BrowserRouter>, document.querySelector('#app'), ); -오류내용-ERROR in ./client.tsx:15:4TS2786: 'BrowserRouter' cannot be used as a JSX component. Its instance type 'BrowserRouter' is not a valid JSX element. The types returned by 'render()' are incompatible between these types. Type 'React.ReactNode' is not assignable to type 'import("C:/Users/LG gram 15/node_modules/@types/react/index").ReactNode'. Type '{}' is not assignable to type 'ReactNode'. 13 | 14 | render( > 15 | <BrowserRouter> | ^^^^^^^^^^^^^ 16 | <App /> 17 | </BrowserRouter>, 18 | document.querySelector('#app'),sleact (webpack 5.74.0) compiled with 1 error in 9547 ms 백엔드 서버를 킨 상태에서,npm i 실행하였고npm run build를 실행하게되면위에 오류가 발생됩니다.
-
미해결하울의 안드로이드 인스타그램 클론 만들기
게시물을 최신게시물순으로 하고싶은데 어떻게 하면 될까요..?ㅠ
게시물을 최신게시물 순으로 하고 싶은데 혹시 어떻게 하면 되는지 아시는 분은 알려주시면 감사하겠습니다ㅠ
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
flutter doctor 오류 메세지 질문입니다
'brew install cocoapods' 를 실행하고 설치를 완료한 바로 다음에 flutter doctor을 실행했을때는 모두 다 체크가 된건 확인했는데한 번 더 flutter doctor을 실행하면 다시 이런 메세지가 나오네요며칠 째 계속 해결을 못하고 있네요도움을 주시면 감사드리겠습니다
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
한 페이지에서 벗어나지지 않습니다 ㅠ
그대로 따라 했는데, 이 페이지에서 벗어나 지지 않습니다. 어떻게 해야 벗어나 질까요?;코드 하단에 있습니다.import 'package:flutter/material.dart';import 'package:geolocator/geolocator.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; class HomeScreen extends StatefulWidget { const HomeScreen({Key? key}) : super(key: key); @override State<HomeScreen> createState() => HomeScreenState(); } class HomeScreenState extends State<HomeScreen> {static final LatLng companyLatLng = LatLng( 37.4493182, 126.6601906, ); //위도 경도 지정하기 static final CameraPosition initialPosition = CameraPosition( target: companyLatLng, zoom: 15, ); static final Circle circle = Circle( circleId: CircleId('circle'), ); @override Widget build(BuildContext context) { return Scaffold( appBar: renderAppBar(), body: FutureBuilder( future: checkPermission(), builder: (BuildContext context, AsyncSnapshot snapshot){ if(snapshot.connectionState == ConnectionState.waiting){ return Center( child: CircularProgressIndicator(), ); } if(snapshot.data == '위치 권한이 허가되었습니다.'){ return Column( children: [ _CustomGoogleMap( initialPosition: initialPosition, ), _ChoolcheckButton(), ], ); } return Center( child: Text(snapshot.data), ); }, ),);} Future<String> checkPermission() async { final isLocationEnabled = await Geolocator.isLocationServiceEnabled(); if (!isLocationEnabled) { return '위치 서비스를 활성화 해주세요.';} LocationPermission checkPermission = await Geolocator.checkPermission();if (checkPermission == LocationPermission.denied) { checkPermission = await Geolocator.requestPermission(); if (checkPermission == LocationPermission.denied) { return '위치 권한을 허가해주세요.'; } } if (checkPermission == LocationPermission.deniedForever) { return '앱의 위치 권한을 세팅에서 허가해주세요.'; } return '앱의 위치 권한이 허가되었습니다.';} AppBar renderAppBar() { return AppBar(title: Center( child: Text( '오늘도 출근', style: TextStyle( color: Colors.blue,fontWeight: FontWeight.w700, ),),),backgroundColor: Colors.white, ); }} class _CustomGoogleMap extends StatelessWidget { final CameraPosition initialPosition; const _CustomGoogleMap({required this.initialPosition, Key? key }) : super(key: key); @override Widget build(BuildContext context) { return Expanded( flex: 2, child: GoogleMap( mapType: MapType.normal, initialCameraPosition: initialPosition, myLocationEnabled: true, myLocationButtonEnabled: false, ), ); } } class ChoolcheckButton extends StatelessWidget { const ChoolcheckButton({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Expanded( child: Text( '출근', ), );}}