vue.js 终端中出现“属性不存在”错误,而不是Chrome控制台- Nuxt/Prismic

n7taea2i  于 2023-04-07  发布在  Vue.js
关注(0)|答案(2)|浏览(157)

我正在使用Nuxt和Prismic创建一个产品目录网站。我目前正在从Prismic获取导航部分(产品类别)以显示在侧边栏中。
一切似乎都工作正常(内容按预期加载和显示),但是我在运行npm run dev的终端窗口中看到以下错误:
ERROR ERROR in components/Sidebar.vue:29:14
14:35:49 TS2339:类型“{ data():{ heading:string;never[];}; created():void;方法:{ fetch():Promise;};}'. 27|},28|创建(){ 29|this.fetch()|^^^^ 30|},31|方法:{ 32|public void run(){
错误在组件/边栏.vue:35:20 TS 2339:类型“{ fetch():Promise;}'. 33|const that = this;34|// TODO:将Prismic调用移动到actions.ts - this.$store.dispatch('fetchSections')35|等待这个.$prismic.API|^^^^^^^^ 36|.getByUID('navigation ',' categories')37|.then(function(document){|console.log(document)
错误在组件/边栏.vue:37:24 TS 7006:参数“document”隐式地具有“any”类型。35|等待这个。API|.getByUID('navigation ',' categories')37|public function(function){|^^^^^^^^ 38|console.log(document)39|that.heading = document.data.doc_name[0].text 40|that.sections = document.data.nav
ERROR in components/Sidebar.vue:39:18 TS2339:类型“{ fetch():Promise;}'. 37|.then(function(document){|console.log(document)39|that.heading = document.data.doc_name[0].text|40|that.sections = document.data.nav 41|})42|{\fnSimHei\bord1\shad1\pos(200,288)}
ERROR in components/Sidebar.vue:40:18 TS2339:类型“{ fetch():Promise;}'. 38|console.log(document)39|that.heading = document.data.doc_name[0].text 40|that.sections = document.data.nav|^^^^^^^^ 41|})42|43|{\fnSimHei\bord1\shad1\pos(200,288)}
ERROR in components/SidebarSection.vue:43:26 TS2339:类型“{ name:string; props:{部分:{类型:对象构造器;required:boolean;}; isCollapsed:{ type:布尔构造函数;}; }; mounted():void;}'. 41|},42|mounted(){ 43|console.log(this.section.items[0].sub_nav_link_label[0].text)|^^^^^^ 44|45|46|
尽管我在Chrome控制台输出中没有看到任何错误。
下面是export defaultSidebar.vue中的情况:

export default {
    data() {
        return {
            heading: "",
            sections: []
        }
    },
    created() {
        this.fetch()
    },
    methods: {
        async fetch() {
            const that = this;
            // TODO : Move Prismic call to actions.ts - this.$store.dispatch('fetchSections')
            await this.$prismic.api
            .getByUID('navigation', 'categories')
            .then(function(document) {
                console.log(document)
                that.heading = document.data.doc_name[0].text
                that.sections = document.data.nav
            })
        }
    }
}

我能想到的唯一潜在问题是,我使用以下声明文件来提供有关Prismic API的类型脚本类型信息:https://github.com/prismicio/prismic-vue/issues/5#issuecomment-723652806
也许我链接的方式有问题?它在types文件夹中,我在以下文件中引用它:

"files": [
  "prismic.d.ts"
]

在tsconfig.json中。
有人有什么建议吗?

编辑:

我刚试着在VSCode中运行npm run dev,而不是在一个单独的终端窗口中运行,现在我在整个项目中看到错误,每当我尝试使用Prismic类型时。这可能是最能说明问题的:
import { PrismicAPI } from '~/types/prismic'
找不到模块“~/types/prismic”或其相应的类型声明。

yqlxgs2m

yqlxgs2m1#

这个问题似乎是与方式,prismic.d.ts包含在tsconfig.json .你可以尝试使用include选项,而不是filestsconfig.json,并使用prismic.d.ts的绝对路径有?像:

{
  "include": ["types/prismic.d.ts"]
}

参考:https://www.typescriptlang.org/tsconfig#include

xghobddn

xghobddn2#

我看到.heading = document.data.doc_name[0].text that.sections = document.data.nav
这是命中注定的
此.heading =document.data.doc_name[0].text this.sections = document.data.nav.
这样您就可以从React数据中访问它

相关问题