fix(runtime-core): fix error when passed plugin is undefined (#502)

This commit is contained in:
Gabriel Loiácono 2019-11-27 11:18:03 -03:00 committed by Evan You
parent cfa7efe4e8
commit fbcc47841b
2 changed files with 18 additions and 17 deletions

View File

@ -244,6 +244,7 @@ describe('api: createApp', () => {
const PluginB: Plugin = {
install: app => app.provide('bar', 2)
}
const PluginC: any = undefined
const app = createApp()
app.use(PluginA)
@ -264,6 +265,12 @@ describe('api: createApp', () => {
expect(
`Plugin has already been applied to target app`
).toHaveBeenWarnedTimes(1)
app.use(PluginC)
expect(
`A plugin must either be a function or an object with an "install" ` +
`function.`
).toHaveBeenWarnedTimes(1)
})
test('config.errorHandler', () => {

View File

@ -102,7 +102,7 @@ export function createAppAPI<HostNode, HostElement>(
} else if (isFunction(plugin)) {
installedPlugins.add(plugin)
plugin(app)
} else if (isFunction(plugin.install)) {
} else if (plugin && isFunction(plugin.install)) {
installedPlugins.add(plugin)
plugin.install(app)
} else if (__DEV__) {
@ -137,15 +137,12 @@ export function createAppAPI<HostNode, HostElement>(
}
if (!component) {
return context.components[name]
} else {
if (__DEV__ && context.components[name]) {
warn(
`Component "${name}" has already been registered in target app.`
)
}
context.components[name] = component
return app
}
if (__DEV__ && context.components[name]) {
warn(`Component "${name}" has already been registered in target app.`)
}
context.components[name] = component
return app
},
directive(name: string, directive?: Directive) {
@ -155,15 +152,12 @@ export function createAppAPI<HostNode, HostElement>(
if (!directive) {
return context.directives[name] as any
} else {
if (__DEV__ && context.directives[name]) {
warn(
`Directive "${name}" has already been registered in target app.`
)
}
context.directives[name] = directive
return app
}
if (__DEV__ && context.directives[name]) {
warn(`Directive "${name}" has already been registered in target app.`)
}
context.directives[name] = directive
return app
},
mount(