微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无效的路由选项“值”必须是一个对象-Hapi.js / Node.js

如何解决无效的路由选项“值”必须是一个对象-Hapi.js / Node.js

我正在使用Hapi和Node创建REST-API。我正在尝试按照这种(How to store routes in separate files when using Hapi?方法将路线放入单独的文件中。但是使用代码波纹管时,出现以下错误Invalid route options ( ) "value" must be an object

我的路线上有user.js

import { UserController } from "../../controllers/user.js";

const baseUrl = '/api/v1';
const userController = new UserController();

export class UserRoutes {

    user() {
        return [
            {
                method: 'GET',path: baseUrl + '/users',config: {
                    handler: (request,response) => {
                        return userController.find(request,response);
                    }
                }
            },{
                method: 'GET',path: baseUrl + '/user/{user_id}',config: {
                    handler: UserController.findById
                }
            },];
    }
}

index.js在同一文件夹中,这应该将其他路由文件(我目前没有)合并到一个路由数组中。

import { UserRoutes } from './user.js';

export class Routes {
    getRoutes() {
        return [].concat(UserRoutes);
    }
}

并像这样在根index.js中使用它:

import {Routes} from './src/routes/v1/index.js';

let routes = new Routes();
server.route(routes.getRoutes());

我做错什么了吗?我也像在上面提到的另一个Stack Overflow线程中一样尝试了Commonjs-但存在相同的错误

解决方法

最后发现了错误的原因。我希望return [].concat(UserRoutes);中的Class UserRoutes返回其中的Method应该返回的值。在此处插入facepalm 。首先,我必须使该类实例化,然后再调用该方法。

routes/index.js

    getRoutes() {
        let userRoutes = new UserRoutes();

        return [].concat(userRoutes.user());
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。