如何解决无效的路由选项“值”必须是一个对象-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 举报,一经查实,本站将立刻删除。