// 使用白名单过滤(前期有一批自定义组件使用了 uni-)
|
import tags from 'uni-helpers/tags'
|
|
import {
|
hasLifecycleHook
|
} from 'uni-helpers/index'
|
|
import {
|
toRawType
|
} from 'uni-shared'
|
|
export default function initVue (Vue) {
|
Vue.config.errorHandler = function (err, vm, info) {
|
const errType = toRawType(err)
|
Vue.util.warn(`Error in ${info}: "${errType === 'Error' ? err.toString() : err}"`, vm)
|
const app = typeof getApp === 'function' && getApp()
|
if (app && hasLifecycleHook(app.$options, 'onError')) {
|
app.__call_hook('onError', err)
|
} else {
|
if (__PLATFORM__ === 'app-plus' && process.env.NODE_ENV !== 'production' && errType === 'Error') {
|
console.error(`
|
${err.message}
|
${err.stack}
|
`)
|
} else {
|
console.error(err)
|
}
|
}
|
}
|
|
const oldIsReservedTag = Vue.config.isReservedTag
|
|
Vue.config.isReservedTag = function (tag) {
|
return tags.indexOf(tag) !== -1 || oldIsReservedTag(tag)
|
}
|
|
Vue.config.ignoredElements = tags
|
|
const oldGetTagNamespace = Vue.config.getTagNamespace
|
|
const conflictTags = ['switch', 'image', 'text', 'view']
|
|
Vue.config.getTagNamespace = function (tag) {
|
if (~conflictTags.indexOf(tag)) { // svg 部分标签名称与 uni 标签冲突
|
return false
|
}
|
return oldGetTagNamespace(tag)
|
}
|
}
|