9

所以,这是我的 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

有人可以帮忙吗?

4

2 回答 2

6

看起来 Feed.vue 中定义的 AppFeedService 并不是真正的组件,它只是您要调用的服务的集合。由于您已将其定义为组件,因此必须在某处实例化该组件,这在大多数情况下意味着您在另一个组件的template.

您可以将其定义为对象。

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 定义它。

于 2017-05-12T21:43:06.337 回答
-1

我得到了与 Webpack 编译错误完全相同的错误:TypeError: WEBPACK_IMPORTED_MODULE_1 ... is not a function in ReactJS。当您从任何其他文件导入任何已定义的变量/组件作为组件时,通常会遇到这种类型的错误。在反应中,我们将组件导入为

import ComponentName from '/componentPath';

因此,如果它不是我们要导入的组件,请尝试将导入作为对象使用

import { componentName } from '/componentPath';

{ } 是对象的铭牌。

于 2020-11-28T14:33:41.117 回答