我知道这可能是基本的,但我无法弄清楚。
我使用vue-cli 3构建了VueJS PWA,一切正常,但是当我尝试为应用提供服务以进行测试或为生产而构建时,我总是会收到错误:属性”在类型”上不存在。
我的代码示例:
import { Component, Prop, Vue } from "vue-property-decorator";
import { VueperSlides, VueperSlide } from "vueperslides";
import "vueperslides/dist/vueperslides.min.css";
import db from "@/db";
@Component({
components: {
VueperSlides,
VueperSlide
}
})
export default class HelloWorld extends Vue {
@Prop() private msg!: string;
data() {
return {
houses: [],
provinces: []
};
}
private created() {
const moment = require("moment");
var date = moment(new Date()).format("YYYY-MM-DD");
db
.collection("houses")
.where("valid_until", ">", date)
.get()
.then(querySnapshot => {
querySnapshot.forEach(doc => {
this.houses.push(doc.data());
});
});
}
在上面的示例中,我不断收到错误消息:“ HelloWorld类型上不存在属性房屋”。但是,无论我在哪里尝试访问data()变量,都没有关系,我总是会遇到相同的错误,但是对于在组件中定义的不同变量,我总是会遇到同样的错误。
有人知道这个问题是什么,因为我真的不知道可能是什么。
答案 0 :(得分:1)
问题在于数据声明。使用类样式组件,您不必像通常那样声明数据属性,而是将各个数据属性声明为:
// good
private houses: any[] = []
private provinces: any[] = []
// bad
data() {
return {
houses: [],
provinces: []
};
}
您当然可以更改any[]
类型以匹配您实际定义房屋和省份的方式,即object[]
,HouseInterface[]
等。