首页 > 解决方案 > 无效的路由选项()“值”必须是一个对象 - 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());

难道我做错了什么?我也尝试了 CommonJS,就像我在上面提到的另一个 Stack Overflow 线程中一样 - 但同样的错误。

标签: javascriptnode.jsresthapi

解决方案


终于找到了错误的原因。我希望 UserRoutes 类return [].concat(UserRoutes);返回内部方法应返回的值...在此处插入 facepalm。首先,我必须启动类,然后调用该方法.. 总是...

routes/index.js

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

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

推荐阅读