묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[초급] 40분만에 훑어보는 Sass
노션 수업자료 내용 중에 궁금한 게 있어요!
안녕하세요 수업을 듣고 노션에 정리되어있는 자료를 보던 도중 궁금한 부분이 생겨서 질문드립니다. 중첩의 앰퍼샌드 부분에 나와있던 예시인데요 중첩이 깊어지게 되면서 불필요한 선택자들이 사용되었다고 하셨는데 어떤 부분이 불필요한 선택자가 사용된건지 이해가 잘 되지 않습니다. 이 부분에서도 질문의 있어요! map-get으로 h1의 값을 가지고 오면 section h2의 font-size는 45px 맞지 않나요? 수업 영상에서도 45px로 컴파일 되는데 자료에는 19px로 적혀있어서 헷갈려서요.. h2 map-get 라인에 주석처리 되어있는 건 어떤 것에 대한 주석일까요...?
-
미해결Vue.js + TypeScript 완벽 가이드
ListView.vue를 ts로 변경 후 에러가 발생합니다.
점진적인 타입스크립트 적용 방식 2단계 - 컴포넌트, API 함수 > axios 타입 정의 마무리 > 40초경 ListView.vue의 script부분을 ts로 변경하면 에러가 발생하고 있습니다. ListView.vue파일을 ListView.vue.js로 추론하고 있는 것이 문제인 것 같은데, 이를 vue로 인식하게 할 수 있나요? [변경전] <script> import { fetchNews } from '@/api'; import ListItem from '../components/ListItem.vue'; export default { components: { ListItem }, data() { return { newsItems: [], }; }, methods: { async fetchNewsItems() { const response = await fetchNews(); console.log(response.data); this.newsItems = response.data; }, }, created() { this.fetchNewsItems(); }, } </script> [변경후] <script lang="ts"> import Vue from 'vue'; import { fetchNews } from '@/api'; import ListItem from '../components/ListItem.vue'; export default Vue.extend({ components: { ListItem }, data() { return { newsItems: [], }; }, methods: { async fetchNewsItems() { const response = await fetchNews(); console.log(response.data); this.newsItems = response.data; }, }, created() { this.fetchNewsItems(); }, }); </script> [에러 메시지] ERROR in src/views/CreateListView.ts:1:22 TS2306: File 'C:/test/vue-news-ts/src/views/ListView.vue.js' is not a module. > 1 | import ListView from '@/views/ListView.vue'; | ^^^^^^^^^^^^^^^^^^^^^^ 2 | import bus from '../utils/bus'; 3 | import { CreateElement } from 'vue'; 4 | [CreateListView.ts] import ListView from '@/views/ListView.vue'; import bus from '../utils/bus'; import { CreateElement } from 'vue'; export default function createListView(name: string) { return { name, mounted() { bus.$emit('off:progress'); }, render(h: CreateElement) { return h(ListView); }, }; }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 공부를 시작하기 전에 궁금한 사항이 있습니다.
안녕하세요. JPA를 강의를 통해 처음 접하게 되었습니다. 강좌 소개를 보니 SQL 쿼리를 대체해서 JPA로 사용하는 것 같은데 NoSQL 같은 경우에는 JPA와 연관관계가 없는 건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part2: 게임 수학과 DirectX12
v성분 중에서 a와 수직이라는게 좀 헷갈려요
2:10 v성분 중에서 a와 수직인게 Vㅗa라고 한다는게 a와 수직인 v의 성분이라는게 v와 a가 이루고 있는 평면 중에서 a 와 수직인 부분을 말하는 건가요? 2:58에서는 v와 a에 수직한 이 v의 성분이라고 하셨는데 v와 a 둘 다에 수직한 벡터를 말씀하시는 건가요? Vㅗa라는 건 v와 a 둘 다에 수직인 벡터를 말하는게 아니라 v와 a가 이루고 있는 평면 안에서 a 와 수직인 벡터를 말하는 게 맞는거죠?
-
미해결웹 개발자와 정보보안 입문자가 꼭 알아야 할 웹 해킹 & 시큐어 코딩
강의자료는 어디서 보나요?
강의자료는 어디서 보나요? 파일로 같이 보고 싶어서요!
-
미해결VBA 빅픽처
선생님 1강에서 나눔고딕 코딩으로 변경하기 위한 오른쪽 목록표시가 뜨지않아서 문의드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이렇게 뜨는데 확인 부탁드려요, 그리고 vba기초자인데 이와관련하여 들을만한 강의나 책이 있을까요 프로시저와 같은 말이 생소하여 따라가는데 조금 버거워서요
-
미해결15일간의 빅데이터 파일럿 프로젝트
mv 명령 후 파일 삭제...
단순 질문 입니다만... mv 명령어로 파일을 옮기면 파일이 없어지네요 ... 혹시 원인을 알 수 있을까요 ?? [root@server02 working]# cd SmartCar/ [root@server02 SmartCar]# ls SmartCarStatusInfo_20220320.txt [root@server02 SmartCar]# ls -ltrh total 3.0M -rw-r--r-- 1 root root 3.0M Mar 21 04:30 SmartCarStatusInfo_20220320.txt [root@server02 SmartCar]# mv ./SmartCarStatusInfo_20220320.txt /home/pilot-pjt/working/car-batch-log/ [root@server02 SmartCar]# cd /home/pilot-pjt/working/car-batch-log/ [root@server02 car-batch-log]# ls [root@server02 car-batch-log]# ls -ltr total 0 [root@server02 car-batch-log]# cd .. [root@server02 working]# cd ./SmartCar/ [root@server02 working]# ls -ltr total 1396 -rwxrwxrwx 1 root root 1417133 Mar 9 15:31 bigdata.smartcar.loggen-1.0.jar drwxrwxrwx 2 root root 4096 Mar 9 15:32 driver-realtime-log -rwxrwxrwx 1 root root 0 Mar 21 04:54 ${sys:logFilename} drwxrwxrwx 2 root root 4096 Mar 21 04:54 SmartCar drwxrwxrwx 3 root root 4096 Mar 21 04:55 car-batch-log [root@server02 SmartCar]# ls p.s. 강의 기간이 오늘까지인데... 혹시 일주일 정도 더 연장이 가능할까요 ...?
-
미해결iOS/Android 앱 개발을 위한 실전 React Native - Basic
node js 10.15.1 설치가 안됩니다
안녕하세요. nvm설치를 성공적으로 한 후 10.15.1 install 하려니 요청한 url에서 에러 404를 리턴했다고 계속 뜹니다. 어떻게 해결해야할까요? curl: (22) The requested URL returned error: 404
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
BatchSize와 OneToMany에 대해 질문드립니다.
안녕하세요. 좋은 강의 정말 잘 듣고있습니다. 컬렉션 조회 최적화 - 페이징과 한계 돌파편을 보다가 궁금한 점이 생겨서 질문드립니다. BatchSize = 100 설정 시 다대일 관계에서는 BatchSize에 설정한 만큼 100개의 데이터를 조회하는데 일대다 관계에서는 컬렉션의 크기에 따라 조회되는 데이터 크기가 굉장히 많을 수도 있어 보입니다. 이전에 예제로 사용하셨던 Team과 Member 클래스로 예를 들면 [ ManyToOne 매핑 ] [ 사용 시 ] 위 처럼 Member 엔티티로 다대일 관계를 갖는 team에 접근하는 경우 BatchSize에 의해 최대 100개의 팀을 조회합니다. 쿼리도 생각한대로 실행되고.. 그런데 아래처럼 Team 엔티티로 일대다 관계인 members 컬렉션에 접근하면 [ OneToMany 매핑 ] [ 사용 시 ] 이런 쿼리가 실행되더라구요. 만약 해당 팀에 소속된 회원이 10000명이라 치면 10000명이 다 조회되는건가요? 애초에 실무에선 저렇게 설계하면 안되는건지, 그런건 Member를 조회하며 페이징해서 사용해야 되는지, 아니면 다르게 튜닝하는 법이 있는지 궁금해서 질문드립니다. ( 관계를 반대로 써놨었네요. 수정했습니다. )
-
미해결[D.P.(DappProject)] 디앱 프로젝트(NFT 생성, NFT 구매 및 판매)
안녕하세요! 질문있습니다.
Java Spring 기반으로 NFT 마켓 API 서버를 만드는 것도 가능할까요? 혹시 가능하다면 무엇을 봐야할지 알려주시면 감사하겠습니다.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
선생님, 질문이 있습니다.
강의와는 다소 관련이 없을 수는 있는데요, 행렬 미분에 관한 질문입니다. 가령 어떤 이미지 배열 I가 [[0.4488189 0.41338583 0.43307087 0.44094488 0.43700787] [0.44094488 0.44094488 0.4015748 0.42125984 0.42913386] [0.4015748 0.4488189 0.4015748 0.42913386 0.43700787] [0.42519685 0.47637795 0.42519685 0.42519685 0.42913386] [0.42125984 0.45275591 0.4015748 0.42913386 0.40944882]] 이렇게 주어져 있을 때, 이에 대한 row-direction으로 forward differenceI[x+1,y] - I[x,y] 를 구한다는 말이 무슨 말인지 이해가 되지 않습니다. 그러니까 row 방향이라는 말은 가로 벡터를 기준으로 미분을 구한다는 소리같은데 미지수 x를 정해놓고 미분을 하는 것도 아니고 이게 헷갈립니다. 저 표현식만 놓고보면 가령 I[2,1] - I[1,1], I[3,1] - I[2,1] ... 이런 계산을 각각 하라는 말같은데, 이렇게 되면 그 차를 각각 구한 행렬은 4 * 5크기가 되지 않나요?I[x+1,y] - I[x,y] 정확히 이 식이 무엇을 의미하는지 잘 모르겠습니다. 언뜻 봐서는 F(x)가 만약 존재한다면 행렬 I에 대해서 x가 1일 때의 미분값을 각각 구하라는 뜻인데 스칼라 값 기준으로 구하게 되면 4*5가 되어서 뭔가 원행렬 I와 크기가 다르게 되니 그거는 또 아닌거같고.. 정확히 잘 모르겠습니다ㅜㅜ!!
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
안녕하세요 state 관련 질문이요
export const initialState = { mainPosts: [ { id: 1, User: { id: 1, nickname: "제로초", }, content: "첫 번째 게시글 #해시태그 #익스프레스", Images: [ { src: "https://bookthumb-phinf.pstatic.net/cover/137/995/13799585.jpg?udate=20180726", }, { src: "http://gimg.gilbut.co.kr/book/BN001958/rn_view_BN001958.jpg", }, { src: "https://gimg.gilbut.co.kr/book/BN001998/rn_view_BN001998.jpg", }, ], Comments: [ { User: { nickname: "nero", }, content: "우와 개정판이 나왔군요~", }, { User: { nickname: "hero", }, content: "얼른 사고 싶어요!", }, ], }, ], imagePaths: [], postAdded: false, }; mainPosts,Comments에서 [{}] 이런구조로 작성하셨는데 제가 생각하기에 []배열로 감싸지 않고 {}객체로 바로 써도 괜찮을 거 같았는데 [{}] 이 구조로 작성하신이유가 map함수때 이용하기 위해서인가요?
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
FieldError at /instagram/post/
안녕하세요, 선생님! 오늘도 신기한 기능 알려주셔서 감사합니다. 그런데 model.py와 view.py 수정 후 migrate까지 했는데도, FieldError가 발생합니다. create_at에 문제가 있다고 추측만가능하고, 해결방법을 찾지 못했습니다. 정확하게 이 에러가 어떤 상황에서 발생하는지, 어떻게 해결할 수 있는지 조언해주실 수 있으신가요? 에러화면 view.py from datetime import timedeltafrom django.contrib import messagesfrom django.contrib.auth import get_user_modelfrom django.contrib.auth.decorators import login_requiredfrom django.db.models import Qfrom django.shortcuts import render, redirect, get_object_or_404from django.utils import timezonefrom .forms import PostFormfrom .models import Post@login_requireddef index(request): timesince = timezone.now() - timedelta(days=3) post_list = Post.objects.all()\ .filter( Q(author=request.user) | Q(author__in=request.user.following_set.all()) )\ .filter( created_at__gte=timesince ) suggested_user_list = get_user_model().objects.all()\ .exclude(pk=request.user.pk)\ .exclude(pk__in=request.user.following_set.all())[:3] return render(request, "instagram/index.html", { "post_list": post_list, "suggested_user_list": suggested_user_list, }) models.py import refrom django.conf import settingsfrom django.db import modelsfrom django.urls import reverse# Create your models here.class BaseModel(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: abstract = Trueclass Post(models.Model): author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) photo = models.ImageField(upload_to = "instagram/post/%Y/%m/%d") caption = models.TextField(max_length=500) tag_set = models.ManyToManyField('Tag', blank = True) location = models.CharField(max_length=100) def __str__(self): return self.caption
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
북마크 탭에서 삭제기능을 추가하려고합니다
북마크 탭에서 삭제기능을 추가하려고합니다 삭제기능을 추가해 북마크 아이콘을 누르면 삭제된 콘텐츠빼고 새롭게 다시북마크 탭에 드가게되는데 이거를 처음 북마크상태가 남아있어 계쏙 계쏙 쌓이게 됩니다 기존의 레이아웃에 계쏙 초기화시키는 방법밖에 없을까요?.. BookmarkFragment.kt ``` package com.example.communityapp.fragmentsimport android.os.Bundleimport android.util.Logimport androidx.fragment.app.Fragmentimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport androidx.databinding.DataBindingUtilimport androidx.navigation.findNavControllerimport androidx.recyclerview.widget.GridLayoutManagerimport androidx.recyclerview.widget.RecyclerViewimport com.example.communityapp.Rimport com.example.communityapp.contentlist.BookmarkRVAdapterimport com.example.communityapp.contentlist.ContentModelimport com.example.communityapp.databinding.FragmentBookmarkBindingimport com.example.communityapp.utills.FBRefimport com.example.communityapp.utills.FBauthimport com.google.firebase.database.DataSnapshotimport com.google.firebase.database.DatabaseErrorimport com.google.firebase.database.ValueEventListener// TODO: Rename parameter arguments, choose names that matchclass BookmarkFragment : Fragment() { private lateinit var binding: FragmentBookmarkBinding lateinit var rvAdapter: BookmarkRVAdapter val bookmarkIdList = mutableListOf<String>() val items = ArrayList<ContentModel>() val itemKeyList = ArrayList<String>() private val TAG = BookmarkFragment::class.java.simpleName override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { binding = DataBindingUtil.inflate(inflater, R.layout.fragment_bookmark, container, false) //2 getBookmarkData() //3 rvAdapter = BookmarkRVAdapter(requireContext(), items, itemKeyList, bookmarkIdList) val rv: RecyclerView = binding.bookmarkRV rv.adapter = rvAdapter rv.layoutManager = GridLayoutManager(requireContext(), 2) binding.hometap.setOnClickListener { it.findNavController().navigate(R.id.action_bookmarkFragment_to_homeFragment) } binding.tiptap.setOnClickListener { it.findNavController().navigate(R.id.action_bookmarkFragment_to_tipFragment) } binding.storetap.setOnClickListener { it.findNavController().navigate(R.id.action_bookmarkFragment_to_storeFragment) } binding.talktap.setOnClickListener { it.findNavController().navigate(R.id.action_bookmarkFragment_to_talkFragment) } return binding.root } private fun getCategoryData() { val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { for (dataModel in dataSnapshot.children) { Log.d(TAG, dataModel.toString()) val item = dataModel.getValue(ContentModel::class.java) if (bookmarkIdList.contains(dataModel.key.toString())) { items.add(item!!) itemKeyList.add(dataModel.key.toString()) } } rvAdapter.notifyDataSetChanged() } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w("ContentListActivity", "loadPost:onCancelled", databaseError.toException()) } } FBRef.category1.addValueEventListener(postListener) FBRef.category2.addValueEventListener(postListener) FBRef.category3.addValueEventListener(postListener) FBRef.category4.addValueEventListener(postListener) FBRef.category5.addValueEventListener(postListener) FBRef.category6.addValueEventListener(postListener) FBRef.category7.addValueEventListener(postListener) FBRef.category8.addValueEventListener(postListener) } private fun getBookmarkData() { val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { bookmarkIdList.clear() for (dataModel in dataSnapshot.children) { bookmarkIdList.add(dataModel.key.toString()) }//1 rvAdapter.notifyDataSetChanged() getCategoryData() } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w("ContentListActivity", "loadPost:onCancelled", databaseError.toException()) } } FBRef.bookmarkRef.child(FBauth.getUid()).addValueEventListener(postListener) }}```BookMarkRVAdapter.kt``` package com.example.communityapp.contentlistimport android.content.Contextimport android.content.Intentimport android.util.Logimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport android.widget.ImageViewimport android.widget.TextViewimport android.widget.Toastimport androidx.recyclerview.widget.RecyclerViewimport com.bumptech.glide.Glideimport com.example.communityapp.Rimport com.example.communityapp.utills.FBRefimport com.example.communityapp.utills.FBauthclass BookmarkRVAdapter(val context: Context,val items: ArrayList<ContentModel>,val keyList:ArrayList<String>,val bookmarkIdList:MutableList<String>) : RecyclerView.Adapter<BookmarkRVAdapter.ViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BookmarkRVAdapter.ViewHolder { val v = LayoutInflater.from(parent.context).inflate(R.layout.content_rv_item, parent, false) return ViewHolder(v) } override fun onBindViewHolder(holder: BookmarkRVAdapter.ViewHolder, position: Int) { holder.bindItem(items[position],keyList[position]) } override fun getItemCount(): Int { return items.size } inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bindItem(item: ContentModel,key:String) { itemView.setOnClickListener { Toast.makeText(context, item.title, Toast.LENGTH_SHORT).show() val intent = Intent(context, ContentshowActivity::class.java) intent.putExtra("url", item.webUrl) itemView.context.startActivity(intent) } val contentTitle = itemView.findViewById<TextView>(R.id.textArea) val imageViewArea = itemView.findViewById<ImageView>(R.id.imageArea) val bookmarkArea=itemView.findViewById<ImageView>(R.id.bookmarkArea) bookmarkArea.setImageResource(R.drawable.bookmark_color) bookmarkArea.setOnClickListener{ Toast.makeText(context, key, Toast.LENGTH_SHORT) Log.d("BookmarkRVAdapter", FBauth.getUid()) FBRef.bookmarkRef .child(FBauth.getUid()) .child(key) .removeValue() notifyDataSetChanged() } contentTitle.text = item.title Glide.with(context) .load(item.imageUrl) .into(imageViewArea) } }}``` 자신이 북마크한 콘텐츠를 다시 bookmarkFragment 에서 삭제하려고할때 bookmarkIdlist 에서는 원활하게 삭제되는데 화면상으로 레이아웃에서 기존에 bookmarkIdlist 가 남아있는데 화면상에서 기존에있는 bookmarkIdlist를 어떻게 삭제해야할까요 ?...ㅠㅠㅠ
-
해결됨프론트엔드 개발자를 위한, 실전 웹 성능 최적화(feat. React) - Part. 2
정말유익해요
좋은 정보 정말 감사합니다! 돈이 아깝지 않네요ㅎㅎ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Object Start함수 실행 순서 관련 질문있습니다.
몬스터 가짓 수를 늘리던 도중에 CurrentGrid가 null로 떠서 보니까 씬이 로드되면서 CurrentGrid가 채워지는데 채워지기도 전에 먼저 MonsterController의 Init이 실행되면서 생기는 문제였습니다. 구글링 해보니까 컴포넌트 Start함수의 실행순서를 변경할 수 있다기에 그렇게 해서 오류를 해결하긴 했는데 뭔가 시한폭탄을 하나 숨겨둔 느낌이라 좀 찜찜한 느낌이 듭니다. 원래 유니티 Start함수의 실행순서에 관련한 오류가 종종 있는 편이셨는지 여쭙고 싶습니다!
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
강사님 질문있습니다.
강의에서 HTML파일로 문제를 푸는데, js파일로 문제를 풀지는 못하나요? 만약 풀 수 있다면 섹션1, 1번 문제를 js 방식으로 적어주셨으면 합니다.
-
미해결React 기반 Gatsby로 기술 블로그 개발하기
다른 부분에서 오류가 안나는데 {post.map 부분이 계속 오류가 납니다.
-das import React, { FunctionComponent } from 'react' import styled from '@emotion/styled' import PostItem from 'components/Main/PostItem' import { PostListItemType } from 'types/PostItem.types' export type PostType = { node: { id: string frontmatter: { title: string summary: string date: string categories: string[] thumbnail: { publicURL: string } } } } type PostListProps = { posts: PostListItemType[] } const PostListWrapper = styled.div` display: grid; grid-template-columns: 1fr 1fr; grid-gap: 20px; width: 768px; margin: 0 auto; padding: 50px 0 100px; @media (max-width: 768px) { grid-template-columns: 1fr; width: 100%; padding: 50px 20px; } ` const PostList: FunctionComponent<PostListProps> = function ({ posts }) { return ( <PostListWrapper> {posts.map( ({ node: { id, frontmatter }, }: PostType) => ( <PostItem {...frontmatter} link="https://www.google.co.kr/" key={id} /> ), )} </PostListWrapper> ) } export default PostList 색칠한 부분이 Argument of type '({ node: { id, frontmatter }, }: PostType) => JSX.Element' is not assignable to parameter of type '(value: PostListItemType, index: number, array: PostListItemType[]) => Element'. Types of parameters '__0' and 'value' are incompatible. Type 'PostListItemType' is not assignable to type 'PostType'. The types of 'node.frontmatter.thumbnail' are incompatible between these types. Property 'publicURL' is missing in type '{ childImageSharp: { gatsbyImageData: IGatsbyImageData; }; }' but required in type '{ publicURL: string; }'. 이런 에러를 띄웁니다... 계속 처음부터 따라해봤는데 요부분만 해결이 안되요...
-
미해결[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
put 과제
제가 너무 부족해서 이것 저것 구글링 해보느라 오래걸렸는데 결국에는 stream().foreach() 문으로 해결해봤습니다! 강의 하나 하나 너무 재밌습니다, 좋은 강의 만들어주셔서 감사합니다
-
미해결Vue.js + TypeScript 완벽 가이드
error overlay를 감추는 필드를 추가하면 에러가 발생합니다.
"점진적인 타입스크립트 적용 방식 2단계 - 컴포넌트, API 함수" > "API 파일에 타입스크립트 적용 및 호출 로직 구현"의 [1분 24초 경] error overlay를 감추는 방식이 변경된 것 같습니다. 저의 경우, vue cli로 프로젝트를 생성하면 vue.config.js가 기본으로 생성되고 있고, 약간의 내용(i.e. "transpileDependencies: true,")이 포함되어있습니다. 일단 무시하면서 진행하고 있는데, 아래의 에러가 발생하고 있습니다. 변경된 방법을 아시나요? [package.json] "dependencies": { "axios": "^0.26.1", "core-js": "^3.8.3", "vue": "^2.6.14", "vue-router": "^3.0.1", "vuex": "^3.0.1" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.4.0", "@typescript-eslint/parser": "^5.4.0", "@vue/cli-plugin-babel": "~5.0.0", "@vue/cli-plugin-eslint": "~5.0.0", "@vue/cli-plugin-typescript": "~5.0.0", "@vue/cli-service": "~5.0.0", "@vue/eslint-config-typescript": "^9.1.0", "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-vue": "^8.0.3", "prettier": "^2.4.1", "typescript": "~4.5.5", "vue-template-compiler": "^2.6.14" } [vue.config.js] const { defineConfig } = require("@vue/cli-service"); module.exports = defineConfig({ transpileDependencies: true, lintOnSave: false, devServer: { overlay: false, }, }); [에러 메시지] ----- C:\test\vue-news-ts>npm run serve > vue-news-ts@0.1.0 serve C:\test\vue-news-ts > vue-cli-service serve INFO Starting development server... ERROR ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options has an unknown property 'overlay'. These properties are valid: object { allowedHosts?, bonjour?, client?, compress?, devMiddleware?, headers?, historyApiFallback?, host?, hot?, http2?, https?, ipc?, liveReload?, magicHtml?, onAfterSetupMiddleware?, onBeforeSetupMiddleware?, onListening?, open?, port?, proxy?, server?, setupExitSignals?, setupMiddlewares?, static?, watchFiles?, webSocketServer? } ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options has an unknown property 'overlay'. These properties are valid: object { allowedHosts?, bonjour?, client?, compress?, devMiddleware?, headers?, historyApiFallback?, host?, hot?, http2?, https?, ipc?, liveReload?, magicHtml?, onAfterSetupMiddleware?, onBeforeSetupMiddleware?, onListening?, open?, port?, proxy?, server?, setupExitSignals?, setupMiddlewares?, static?, watchFiles?, webSocketServer? } at validate (C:\test\vue-news-ts\node_modules\webpack-dev-server\node_modules\schema-utils\dist\validate.js:115:11) at new Server (C:\test\vue-news-ts\node_modules\webpack-dev-server\lib\Server.js:232:5) at serve (C:\test\vue-news-ts\node_modules\@vue\cli-service\lib\commands\serve.js:183:20) at processTicksAndRejections (internal/process/task_queues.js:93:5) npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! vue-news-ts@0.1.0 serve: `vue-cli-service serve` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the vue-news-ts@0.1.0 serve script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\sundlee\AppData\Roaming\npm-cache\_logs\2022-03-20T14_22_26_938Z-debug.log C:\test\vue-news-ts> ----