]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(warn): fix component name inference in warning trace
authorEvan You <yyx990803@gmail.com>
Mon, 20 Apr 2020 20:06:51 +0000 (16:06 -0400)
committerEvan You <yyx990803@gmail.com>
Mon, 20 Apr 2020 20:06:51 +0000 (16:06 -0400)
packages/runtime-core/src/component.ts
packages/runtime-core/src/warning.ts

index eeadd982e4fa416ada8f6399724364e3b808576d..6ba7c0ffa0fd01b31cbeb65efd4f89424a0b640b 100644 (file)
@@ -52,6 +52,7 @@ export interface SFCInternalOptions {
   __cssModules?: Data
   __hmrId?: string
   __hmrUpdated?: boolean
+  __file?: string
 }
 
 export interface FunctionalComponent<
@@ -540,16 +541,16 @@ const classify = (str: string): string =>
 
 export function formatComponentName(
   Component: Component,
-  file?: string
+  isRoot = false
 ): string {
   let name = isFunction(Component)
     ? Component.displayName || Component.name
     : Component.name
-  if (!name && file) {
-    const match = file.match(/([^/\\]+)\.vue$/)
+  if (!name && Component.__file) {
+    const match = Component.__file.match(/([^/\\]+)\.vue$/)
     if (match) {
       name = match[1]
     }
   }
-  return name ? classify(name) : 'Anonymous'
+  return name ? classify(name) : isRoot ? `App` : `Anonymous`
 }
index c31ecfed912264437e4236df2e4c5d0f380fccb0..7b84d8144196cef980a21fdd3ff5d0839130415b 100644 (file)
@@ -48,10 +48,7 @@ export function warn(msg: string, ...args: any[]) {
         msg + args.join(''),
         instance && instance.proxy,
         trace
-          .map(
-            ({ vnode }) =>
-              `at <${formatComponentName(vnode.type as Component)}>`
-          )
+          .map(({ vnode }) => `at <${formatComponentName(vnode.type)}>`)
           .join('\n'),
         trace
       ]
@@ -111,12 +108,12 @@ function formatTrace(trace: ComponentTraceStack): any[] {
 function formatTraceEntry({ vnode, recurseCount }: TraceEntry): any[] {
   const postfix =
     recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``
-  const open = ` at <${formatComponentName(vnode)}`
+  const isRoot = vnode.component!.parent == null
+  const open = ` at <${formatComponentName(vnode.type, isRoot)}`
   const close = `>` + postfix
-  const rootLabel = vnode.component!.parent == null ? `(Root)` : ``
   return vnode.props
-    ? [open, ...formatProps(vnode.props), close, rootLabel]
-    : [open + close, rootLabel]
+    ? [open, ...formatProps(vnode.props), close]
+    : [open + close]
 }
 
 function formatProps(props: Data): any[] {