属性“类型”不存在

时间:2019-12-16 15:55:09

标签: vue.js

我是VueJS的初学者,我试图四处寻找有关此问题的提示,但找不到任何东西。

我正在维护Vue应用程序,并且开始实施Google SSO登录流程。为此,我使用了vue-google-oauth2

因此,在我的main.ts中,我这样做:

Vue.use(GAuth, {
  clientId: "client_id",
  scope: "profile email",
  prompt: "select_account"
});

在我的登录组件中,我有这个:

export default class extends Vue {
  private googleHandleClick() {
    this.$gAuth.signIn()
      .then(GoogleUser => {
        this.isSignIn = this.$gAuth.isAuthorized
      })
      .catch(error  => {
        //on fail do something
      })
  }
}

但是我在this.$gAuth上遇到构建错误,提示以下内容:

  

类型'default'上不存在属性'$ gAuth'。

该代码可在运行时正常运行,这表明实际上确实存在$gAuth ,但是由于某种原因,类型检查在构建时变得混乱,这破坏了CI和其他方面的工作

基本上,问题是:如何使Vue的this知道该属性存在以及它的类型

1 个答案:

答案 0 :(得分:1)

您可以在Vue论坛上查看this discussion。答案指出:

  

您或其他一些插件通过添加$ gAuth属性来增强Vue原型。

     

当然,Vue的默认类型不包含此属性,因此,如果插件作者或您自己未作任何其他调整,Typescript就会抱怨Vue的类型没有名为$ gAuth的属性。 / p>

它链接到docs,它显示了此示例(几个示例之一):

  

例如,要声明类型为string的实例属性$ myProperty:

duplicateClientNameValidator