node.js - 错误:Route.get() 需要回调函数,但得到了 [object Promise]
问题描述
你们是我最后的希望,我花了12个多小时没有解决问题
该应用程序功能齐全,直到我进行了修改并添加了控件
并将露营地路线移动到单独的文件“控制器”以使路由器文件像这样
router.get("/", isLoggedIn, CatchAsync(Campgrounds.index));
router.get("/me", isLoggedIn, CatchAsync(Campgrounds.me));
router.get("/new", isLoggedIn, CatchAsync(Campgrounds.new_camp));
router.post("/new/submit", isLoggedIn, validate, CatchAsync(Campgrounds.submitnew));
router.get("/:id", isLoggedIn, CatchAsync(Campgrounds.show_Camp));
router.get("/:id/edit", isLoggedIn, isAuthenticated, CatchAsync(Campgrounds.edit_Camp));
router.delete("/:id/delete", isLoggedIn, isAuthenticated, CatchAsync(Campgrounds.delete_Camp));
之后应用程序无法运行
Error: Route.get() requires a callback function but got a [object Promise]
这是沙盒上的项目 https://codesandbox.io/s/vigorous-galileo-sdy0w?file=/app.js
解决方案
这Error
告诉你一切。我看到了你的沙箱,它显示:
(alias) CatchAsync(fn: any): Promise<(req: any, res: any, next: any) => void>
您的CatchAsync
函数返回一个承诺并且 Route.get() 需要回调。
你应该明白这async function
意味着什么。
来自文档:
函数前面的“异步”一词意味着一件简单的事情:函数总是返回一个 Promise。其他值自动包装在已解决的承诺中。
推荐阅读
- jenkins - 詹金斯作业执行中的“java.net.SocketException:套接字关闭”异常
- javascript - 视频+画布全屏问题
- android - 相对布局可以做什么,线性布局不能做什么
- python - 如何在字符串列表中找到最长的字符串?
- google-cloud-platform - 无法删除 Google Cloud 项目
- python - 风筝没有找到pythonpath库,虽然python找到了
- python - Django 2.2 中的翻译不起作用
- javascript - JQuery 计算器数据数字不起作用 | 让 allclear 按钮工作
- react-admin - 使用 ReferenceInput 的完整记录,然后触发 API 调用并显示结果
- django - 序列化器是否有办法执行创建来保存作为外键的字段