所以,这是我的 Api 服务组件,我正在使用 Axios:
import api from './Api.vue';
export default {
name: 'app-feed-service',
methods: {
getPosts() {
return api.get('posts/');
}
}
}
和一些提要组件
import AppSinglePost from './../Feed/Post.vue';
import AppFeedService from './../../api/Feed.vue';
export default {
name: 'app-posts',
components: {
AppSinglePost
},
data() {
return {
posts: []
}
},
created() {
AppFeedService.getPosts().then((res) => {
console.log(res);
});
}
}
现在是错误:
TypeError: __WEBPACK_IMPORTED_MODULE_1__api_Feed_vue___default.a.getPosts is not a function
有人可以帮忙吗?
最佳答案
看起来 Feed.vue 中定义的 AppFeedService 并不是真正的组件,它只是您要调用的服务的集合。由于您已将其定义为组件,因此该组件必须在某处实例化,这在大多数情况下意味着您在另一个组件的模板
中使用它。
您可以将其定义为一个对象。
import api from './Api.js';
export default {
getPosts() {
return api.get('posts/');
}
}
您的 Api.vue 文件可能也是如此。当你定义一个实际的组件时,你只需要使用一个 .vue
文件。
然后在您的提要组件中
import AppFeedService from './../../api/Feed.js';
总而言之:.vue
文件格式用于定义单个文件组件。当您实际定义单个文件组件时,您只需要一个 .vue
文件(可能会在不同组件的 template
中使用的东西)。如果您只想要一个包含方法集合或某些状态的对象,只需使用纯 javascript 定义它即可。
关于javascript - webpack编译错误: TypeError: __WEBPACK_IMPORTED_MODULE_1__ … is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43946738/