我正在使用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 default
在Sidebar.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”或其相应的类型声明。
2条答案
按热度按时间yqlxgs2m1#
这个问题似乎是与方式,
prismic.d.ts
包含在tsconfig.json
.你可以尝试使用include
选项,而不是files
在tsconfig.json
,并使用prismic.d.ts
的绝对路径有?像:参考:https://www.typescriptlang.org/tsconfig#include
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数据中访问它