【发布时间】:2022-01-05 13:30:24
【问题描述】:
我需要从这个资源http://jsonplaceholder.typicode.com/photos获取列表
控制器
@JsonController('/photo')
@Service()
export class PhotoController {
constructor(private photoService: PhotoService) {}
@Get('/load-photos')
loadPhoto() {
return axios
.get('http://jsonplaceholder.typicode.com/photos')
.then(async (response) => console.log(response.data.slice(0, 8)))
.catch((e) => console.log(e));
}
}
邮递员溃败:http://localhost:5000/photo/load-photos
只要我尝试通过 axios 尝试通过邮递员请求资源,我就会调用控制器并收到下面给出的错误。例如,如果我在应用程序之外执行操作,则可以通过 axios 轻松将数据输入控制台。
错误
Error:
at new HttpError (C:\pet-project\express\node_modules\src\http-error\HttpError.ts:16:18)
at new NotFoundError (C:\pet-project\express\node_modules\src\http-error\NotFoundError.ts:10:5)
at ExpressDriver.handleSuccess (C:\pet-project\express\node_modules\src\driver\express\ExpressDriver.ts:324:15)
at C:\pet-project\express\node_modules\src\RoutingControllers.ts:164:35
at processTicksAndRejections (internal/process/task_queues.js:95:5)
应用类:
export class App {
public app: express.Application;
constructor() {
this.app = express();
}
public async createExpressServer(port: number) {
useContainer(Container);
useExpressServer(this.app, {
controllers: [AuthController, PhotoController],
middlewares: [],
authorizationChecker: async (action: Action, roles?: string[]): Promise<boolean> => {
return false;
}
});
this.app.listen(port, () => console.log(`Running on port ${port}`));
}
}
调用应用程序:
const app = new App();
const port: any = process.env.APP_PORT;
app.createExpressServer(5000);
我在应用程序中使用什么:Express 和路由控制器库
问题:为什么我在尝试从控制器的资源中获取数据时收到此错误? 提前感谢您的回复!
【问题讨论】:
-
您是否发送回复以回复您在邮递员中提出的请求?从您提供的代码来看,它看起来不像。 http客户端在发出请求后需要响应,否则请求最终会从客户端超时...
-
我不明白你为什么同时使用
await和then/catch。使用一个或另一个。而且您不会从控制器返回结果。 -
@Anatoly,即使我添加 return axios get (...) 并删除 await,错误仍然存在
-
@ash.io,我请求将数据输出到控制台,不用了,我不需要向客户端返回数据,只是为服务器获取它
-
您确定您的请求正确吗?我在堆栈跟踪中没有看到 axios 错误。显示你如何称呼你的路线
标签: node.js typescript express axios