묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[2025] 비전공자도 가능한 React Native 앱 개발 마스터클래스
4-3 UI 구성하기 화면
안녕하세요. 15분 23초 부분 전에 화면이 잘린 것 같아 문의드려요.그 전의 부분에서는 이렇게 썼는데const OperatorButton = styled(NumberButton)` height: 8%; width: 13%; `;15분 23초 이후에 갑자기 이 부분이 const OperatorButton = styled.TouchableOpacity로 바껴져 있어요. ㅠㅠ 자동변환인가여? 이해가 안돼요
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
17-03 백엔드 호스트와 포트 에러
강의 45:00분에 나오는 host, port, username, password 등을 따라 작성해보고, 노션에 기입된 해당 코드 역시 시도해보았지만, 다음과 같은 에러가 계속해서 발생합니다.백엔드 프로그램을 실행합니다! 여기서 API를 만들거예요. 여기에 DB에 접속하고, 테이블을 만들 거예요. Error: connect ETIMEDOUT 34.64.244.122:5031 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1634:16) { errno: -60, code: 'ETIMEDOUT', syscall: 'connect', address: '34.64.244.122', port: 5031 }아래는 index.ts와, Board.postgres.ts 입니다.import { DataSource } from "typeorm" import { Board } from "./Board.postgres." console.log("백엔드 프로그램을 실행합니다!") console.log("여기서 API를 만들거예요.") // // console.log("여기에 DB에 접속하고, 테이블을 만들 거예요.") const AppDataSource = new DataSource({ type: "postgres", host: "34.64.244.122", port: 5031, username: "postgres", password: "postgres2022", database: "postgres", synchronize: true, logging: true, entities: [Board], }) AppDataSource.initialize() .then(() => { console.log("DB에 접속 성공했습니다. 동기화를 시작합니다.") }) .catch((error) => console.log(error)) import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm" @Entity() export class Board extends BaseEntity { @PrimaryGeneratedColumn("increment") number!: number @Column({ type: "text" }) writer!: string @Column({ type: "text" }) title!: string @Column({ type: "text" }) contents!: string }
-
미해결Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로
유튜브 영상과의 차이점 문의
유튜브에서도 이미 올려주시는것을 보고강의도 구매했는데영상이 꽤 겹치는것 같은데, 인프런 강의에서만 나와있는 영상은 어떤걸까요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
라이브러리 이름
라이브러리 불러올때 import color1 from "randomcolor"; 라이브러리 이름 정확히 적었는데 오류떠요 ㅠ
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
npm run start
강의때 선생님께서 하신거처럼 npm run start 입력해도 에러떠요그래서 node 02.js 로 실행시켰는데 이렇게해도 같은건가요?npm run start 는 왜 안되는거예요?경로설정에 "start": "node 02.js"추가했는데 안되요 ㅠ
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
npm run start
강의때 선생님께서 하신거처럼 npm run start 입력해도 에러떠요그래서 node 02.js 로 실행시켰는데 이렇게해도 같은건가요?npm run start 는 왜 안되는거예요?경로설정에 "start": "node 02.js"추가했는데 안되요 ㅠ
-
해결됨Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로
template.tsx 가 SEO 에 주는 이점에 대한 질문
template.tsx는 페이지 전환 시 새로운 인스턴스를 생성하여 상태가 초기화되는데,이러한 특성을 활용해 SEO 메타데이터 처리의 정확성과 일관성을 높이기 위한 목적으로 사용하는 것인가요?즉, 전역 상태나 클라이언트 캐시 등으로 인해 예외적으로 SEO 메타데이터가 적용되지 않는 문제를 방지하기 위한 보완적 수단으로 보면 될까요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
아직은 리액트가 아닐 텐데 그럼 CJS로는 라이브러리를 사용하지 못하나요?
이전 강의에서 package.json에 "type": "module"을 추가한 상태이고 라이브러리를 가져올 때 사용한 문법이 ESM인 것 같은데 CJS로도 가능한지 궁금합니다.
-
해결됨Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로
자동화 스크립트 관련하여 질문있습니다.
스크립트를 수정해 동적 라우팅이나, Route Group 같은 폴더도 고려해서 pathname.ts를 구성해야 될까요?
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
서버 502 error
백엔드 서버 키니 이렇게 나오는데 왜이런가요?
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
vs code 검색안됨
터미널에서 코드 입력해서 vs코드 열 수 있도록 하는 설정 강의보고 따라했는데"code" 쳐도 제 vs목록에 PATH에 'code'명령 설치 라는 항목이 없어요ㅠㅠ
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
리액트 1강
선생님 수업 내용 똑같이 따라쳤는데 (바벨도 다운로드 코드도 쳤는데)라이브서버로 실행시켰을때 (>)신택스 에러뜨면서안녕하세요 안떠요 ㅠㅠ리액트나 바벨 설치가 안된거 아닌가요?
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
Vs code 코드 저장하면 정렬 이상하게 되요!
이런 코드가 ctrl+s 눌러서 저장하면이렇게 바뀌는데 가독성이 안좋아서 저장해도 가독성좋게 1줄로 하고싶은데해결방법이 있을까요ㅠㅠ?
-
해결됨코드로 배우는 React 19 with 스프링부트 API서버
목록처리(2)에서 페이지 넘버 버튼을 누르면 표시되는 목록이 10개로 안 나옵니다
위 사진들과 같이 각 페이지에 항목이 10개씩 표시되어야 하는데 페이지 버튼의 숫자대로 표시되고 있습니다.ListConponent.js쪽이 이상한가 싶어서 찾아봐도 뭐가 문제인지 모르겠습니다.혹시 참고 자료 필요하신 게 있으시다면 말씀 부탁드리겠습니다.
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
input text 빈 공간 ""
왜 빈 공간을 " " 이렇게 나타내지 않고"" 로 붙여서 나타내나요?선생님께서 저번 수업때 ex) 1 산청딸기표현할때console.log(1+" "+산청딸기) 이런식으로 띄어쓰기는(빈공간)은 " " 가 맞지 않나요?
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
function 형식
let time=10setInterval(function(){console.log(time)},1000)강의 중setInterval에 익명함수를 집어넣는다고 하셨는데let time=10setInterval(let aa=function(){console.log(time)},1000)이 코드가 맞지 않나요?그니까 먼저 익명함수 이름부터 선언해야하지 않나요?그리고 여기서도위에 함수는 change라고 이름을 붙여줬는데밑에 함수는 이름도 없이 쓰는것이 왜 그런거인지 궁금합니다!
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
판매, 구매 목록등 판매자, 구매자 데이터를 불러오지 못합니다.
마이페이지에서 구매내역에서 seller, buyer의 _id, name 등 가져오지 못합니다.query { fetchPointTransactionsOfBuying(page: 1, search: "") { amount status statusDetail travelproduct { name seller { name } } } }graphQl 페이지에서 직접 header에 토큰 넣어도 불러오지 못하는데 어떻게 피그마에 있는 구매내역의 판매자 값을 불러올 수 있을까요?seller, buyer를 포함하면 API 요청은 되는데 에러가 떠 데이터 사용하지 못하고 제외하고 요청을 하면 정상적으로 사용할 수 있습니다.
-
해결됨파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)
django-component==0.139 실행 시 오류
질문을 온전히 이해할 수 있도록, 모든 맥락을 전달해주세요.질문은 질문자가 번거로워야 보다 좋은 답변을 얻으실 수 있습니다.시행착오를 알려주시면 곧바로 원하는 문제에 집중할 수 있습니다.오류 메시지는 일부만 알려주시기보다 전체 오류 메시지를 캡처해서 주시면, 오류 파악에 도움이 됩니다. 당신의 파이썬/장고 페이스메이커가 되겠습니다. ;-)인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. runserver 실행 시 하기의 오류가 발생합니다.Exception ignored in : <function Componentregistry.__del__ at 0x2af53d0bf9a0> Traceback (most recent call last): File " .venv/lib/python3.10/site-packages/django_components/component_register.py", line 267, in __del__ AttributeError: 'NoneType' object has no attribute 'on_registry_deleted' Watching for file changes with StatReloader #...일단 겉으로 보기에는 문제 없이 작동은 합니다.settings.py는 django-components 설치 - 파이썬사랑방 튜토리얼 (pyhub.kr) 과 documentation을 보고 수정하였는데 위와 같은 문제가 발생하는 이유를 모르겠어서 혹시 아실까 싶어 질문드립니다.from email.utils import getaddresses import os, sys from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent from django.urls import reverse_lazy from environ import Env env = Env() ENV_PATH = Path(env.str("ENV_PATH", default=str(BASE_DIR / ".env"))) if ENV_PATH.exists(): with ENV_PATH.open(encoding="utf-8") as f: env.read_env(f, overwrite=True) SECRET_KEY = env.str( "SECRET_KEY", default="django-insecure-k-7_h!2*)6jefsxn6k^2@o%jb5tozyd*6^ga+ded==osow#%!!", ) # SECURITY WARNING: don't run with debug turned on in production! DEBUG = env.bool("DEBUG", default=True) ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", default=[]) CSRF_TRUSTED_ORIGINS = env.list("CSRF_TRUSTED_ORIGINS", default=[]) # Application definition INSTALLED_APPS = [ # django apps "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", # third apps "crispy_forms", "crispy_bootstrap5", "django_bootstrap5", "django_components", "django_extensions", "django_filters", "django_htmx", "formtools", # will be deprecated, form wizard "imagekit", "taggit", "template_partials", # local apps "accounts", "board", "core", "pao", "simater", "dvmt", # Django clenup should be placed last "django_cleanup.apps.CleanupConfig", ] CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5" CRISPY_TEMPLATE_PACK = "bootstrap5" TAGGIT_CASE_INSENSITIVE = env.bool("TAGGIT_CASE_INSENSITIVE", default=True) if DEBUG: INSTALLED_APPS += [ "debug_toolbar", ] AUTH_USER_MODEL = "accounts.User" # Load customized user from accounts app LOGIN_REDIRECT_URL = "/" LOGIN_URL = reverse_lazy("accounts:login") from django.core.exceptions import ImproperlyConfigured EMAIL_HOST = env.str("EMAIL_HOST", default=None) if DEBUG and EMAIL_HOST is None: # EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" else: try: EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" EMAIL_PORT = env.int("EMAIL_PORT") EMAIL_USE_SSL = env.bool("EMAIL_USE_SSL", default=False) EMAIL_USE_TLS = env.bool("EMAIL_USE_TLS", default=False) EMAIL_HOST_USER = env.str("EMAIL_HOST_USER") EMAIL_HOST_PASSWORD = env.str("EMAIL_HOST_PASSWORD") DEFAULT_FROM_EMAIL = env.str("DEFAULT_FROM_EMAIL") SERVER_EMAIL = env.str("SERVER_EMAIL", default=DEFAULT_FROM_EMAIL) except ImproperlyConfigured as e: print("ERROR:", e, file=sys.stderr) EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", "django_htmx.middleware.HtmxMiddleware", "csp.middleware.CSPMiddleware", ] if DEBUG: MIDDLEWARE = [ "debug_toolbar.middleware.DebugToolbarMiddleware", ] + MIDDLEWARE ROOT_URLCONF = "config.urls" TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [ BASE_DIR / "core" / "templates", # BASE_DIR / "core" / "src-django-components", ], # "APP_DIRS": True, "OPTIONS": { "context_processors": [ "django.template.context_processors.debug", "django.template.context_processors.request", "django.contrib.auth.context_processors.auth", "django.contrib.messages.context_processors.messages", ], "loaders": [ ( "django.template.loaders.cached.Loader", [ # Default Django loader "django.template.loaders.filesystem.Loader", # Including this is the same as APP_DIRS=True "django.template.loaders.app_directories.Loader", # Components loader "django_components.template_loader.Loader", ], ) ], }, }, ] WSGI_APPLICATION = "config.wsgi.application" # Database # https://docs.djangoproject.com/en/4.2/ref/settings/#databases DEFAULT_DATABASE_URL = f"sqlite:///{BASE_DIR / 'db.sqlite3'}" DATABASES = { "default": env.db(default=DEFAULT_DATABASE_URL) } # Password validation # https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", }, { "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", }, { "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", }, { "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", }, ] # Internationalization # https://docs.djangoproject.com/en/4.2/topics/i18n/ LANGUAGE_CODE = env.str(var="LANGUAGE_CODE", default="ko-kr") TIME_ZONE = "Asia/Seoul" USE_I18N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/4.2/howto/static-files/ STATIC_URL = env.str("STATIC_URL", default="static/") STATICFILES_DIRS = [ # BASE_DIR / "core" / "static", # BASE_DIR / "core" / "src-django-components", ] STATIC_ROOT = env.str("STATIC_ROOT", default=BASE_DIR / "staticfiles") # django-components # - context variable를 resolve하는 방식이 변경 from django_components import ComponentsSettings COMPONENTS = ComponentsSettings( dirs=[ Path(BASE_DIR) / "core" / "src-django-components", ], ) # COMPONENTS = { # "dirs": [ # # BASE_DIR / "components", # default # BASE_DIR # / "core" # / "src-django-components", # ], # # "context_behavior": "django", # default # } STATICFILES_FINDERS = [ # Default finders "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder", # Django components "django_components.finders.ComponentsFileSystemFinder", ] MIDDLEWARE += [ "django_components.middleware.ComponentDependencyMiddleware", ] # Media files MEDIA_URL = env.str("MEDIA_URL", default="media/") MEDIA_ROOT = env.str("MEDIA_ROOT", default=BASE_DIR / "mediafiles") # Default primary key field type # https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" from django.contrib.messages import constants as messages_constants if DEBUG: MESSAGE_LEVEL = messages_constants.DEBUG INTERNAL_IPS = env.list("INTERNAL_IPS", default=["127.0.0.1"]) if DEBUG: # FORM_RENDERER = "core.forms.renderers.NoCacheDjangoTemplates" INSTALLED_APPS += [ "django.forms", ] DEFAULT_FILE_STORAGE = "django.core.files.storage.FileSystemStorage" ADMIN_PREFIX = os.environ.get("ADMIN_PREFIX", "might/") ## django default loggings : django.utils.logs.DEFAULT_LOGGING ## LOGGING settings LOGGING = { #... } ADMINS = getaddresses([env.str("ADMINS", default="")]) # Django-csp settings CSP_FRAME_ANCESTORS = env.list("CSP_FRAME_ANCESTORS", default=[]) CSP_DEFAULT_SRC = [ "'self'", ] CSP_SCRIPT_SRC = ["'self'", "'unsafe-inline'", "'unsafe-eval'"] + CSP_FRAME_ANCESTORS CSP_STYLE_SRC = [ "'self'", "'unsafe-inline'", ] + CSP_FRAME_ANCESTORS CSP_IMG_SRC = [ "'self'", "data:", ] + CSP_FRAME_ANCESTORS if not CSP_FRAME_ANCESTORS: CSP_FRAME_ANCESTORS = ["'self'"]
-
해결됨아바타 커뮤니티앱 만들기 (React Native Expo)
react-hook-form handleSubmit이 동작하지 않습니다
❗질문 작성시 꼭 참고해주세요에러 메세지에서 단서를 찾을 수 있는 경우가 많습니다. 에러 메세지를 읽고 한번 검색해보시는것을 추천드립니다.질문글을 작성하실때는, 현재 문제(또는 에러)와 코드나 github을 첨부해주세요.개발중인 OS, ReactNative, Node 버전 등의 개발환경을 알려주셔야합니다.에러메세지는 일부분이 아닌 전체 상황을 올려주세요. 일부만 보여주시면 답변이 어렵습니다.에러 잘라서 올리시면 안됩니다!(에러 일부만 자르거나 일부만 복사하지말아주세요) function EmailInput() { const { control } = useFormContext() return ( <Controller name="email" control={control} render={({ field: { onChange, value } }) => ( <InputField label="이메일" value={value} onChangeText={onChange} placeholder="이메일을 입력해주세요." /> )} /> ) } // signup 페이지 마크업 부분입니다 const signupForm = useForm<FormValues>({ defaultValues: { email: '', password: '', passwordConfirm: '' } }) async function onSubmit(data: FormValues) { console.log(data) } return ( <FormProvider {...signupForm}> <View style={styles.container}> <EmailInput /> <PasswordInput /> <PasswordConfirmInput /> </View> <FixedBottomCTA label="회원가입하기" onPress={() => { console.log('onPress::::') signupForm.handleSubmit(onSubmit) }} /> </FormProvider> ) export default function FixedBottomCTA({ label, onPress }: FixedBottomCTAProps) { const inset = useSafeAreaInsets() return ( <View style={[styles.fixed, { paddingBottom: inset.bottom || 12 }]}> <CustomButton label={label} onPress={onPress} /> </View> ) } function CustomButton({ label, size = 'large', variant = 'filled', ...props }: CustomButtonProps) { return ( <CustomPressable style={({ pressed }) => [ styles.container, styles[size], styles[variant], pressed && styles.pressed ]} {...props} > <Text style={styles[variant]}>{label}</Text> </CustomPressable> ) } export const CustomPressable = ({ children, ...props }: PressableProps) => { const pressHandlerProps = Platform.OS === "android" ? { onPressIn: props.onPress || props.onPressIn } : { onPress: props.onPress }; // console.log('pressHandlerProps:::::', pressHandlerProps) return ( <Pressable {...props} {...pressHandlerProps}>{children}</Pressable> ) } node 20vhookform 7.55vios android 동일 증상react-native 0.76.9v 버전입니다.하위 버튼 컴포넌트들에서 onPress 함수만 별도 분리하여 console 찍어봐도 동작하지 않고 signupForm.handleSubmit(onSubmit) 윗부분 console 만 실행되고 있습니다차라리 터미널에 에러 코드라도 나타나면 좋은데 아예 아무런 반응이 없어서 해결에 애를 먹고 있습니다
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
12.13) New 페이지 구현하기 1. UI 마지막 부분 관련 질문
26분 50초 경에메인 컨테이너가 화면 끝까지 안 내려온다는 이유로index.css의 body에 display: flex;를 설정해주셨는데제 화면에서는 display: flex;를 안 적어줘도 메인 컨테이너가 끝까지 내려오고display:flex; 를 쓴 것과 안 쓴 것의 차이가 없습니다.지금 React의 버전이 올라가서 달라진 걸까요?노트북은 LG gram 쓰고 있습니다.display: flex; 체크 되어 있는 버전display: flex; 체크 안 된 버전