Node.js开发错误——Error: callback function required

本文记录了一次在使用Node.js与Express框架开发过程中遇到的'callbackfunctionrequired'错误的解决过程。作者通过仔细检查代码发现错误根源在于错误地引用了Handlebars模板引擎,最终将包名更正为'express-handlebars'解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在参照《Node与Express开发》中代码进行编写时出现如下问题。

throw new Error('callback function required');
Error: callback function required

怎么看代码逻辑也没有出现问题,百度后也没看到对应的解决方法(他们出现问题的地方和我不一样)

最后好好想了想,callback function required,大概意思好像也就是需要回调函数。

检查一下代码,能用到回调函数的也就这一句了。

var handlebars = require('handlebars').create({defaultLayout:'main'});

没有需要回调函数,换句话说也就是没有这个回调函数,可能是引用包出现错误了。检查一下,确实是引用包错误了。

正确的包名是express-handlebars

最后改成如下包名就正确了。

var handlebars = require('express-handlebars').create({defaultLayout:'main'});

这种白痴级别的问题真的有时候真是让人摸不着头脑

编译时出现以下问题:/home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/base_realsense_node.cpp: In member function ‘void realsense2_camera::BaseRealSenseNode::setupFilters()’: /home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/base_realsense_node.cpp:232:76: error: ‘rotation_filter’ is not a member of ‘rs2’; did you mean ‘spatial_filter’? 232 | sh_back(std::make_shared<NamedFilter>(std::make_shared<rs2::rotation_filter>(std::vector< rs2_stream >{ RS2_STREAM_DEPTH, RS2_STREAM_COLOR, RS2_STREAM_INFRARED }), _parameters, _logger)); | ^~~~~~~~~~~~~~~ | spatial_filter /home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/base_realsense_node.cpp:232:92: error: no matching function for call to ‘make_shared<<expression error> >(std::vector<rs2_stream>)’ 232 | e_shared<NamedFilter>(std::make_shared<rs2::rotation_filter>(std::vector< rs2_stream >{ RS2_STREAM_DEPTH, RS2_STREAM_COLOR, RS2_STREAM_INFRARED }), _parameters, _logger)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/11/memory:77, from /opt/ros/humble/include/librealsense2/hpp/rs_types.hpp:18, from /opt/ros/humble/include/librealsense2/rs.hpp:8, from /home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/../include/base_realsense_node.h:17, from /home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/base_realsense_node.cpp:15: /usr/include/c++/11/bits/shared_ptr.h:875:5: note: candidate: ‘template<class _Tp, class ... _Args> std::shared_ptr<_Tp> std::make_shared(_Args&& ...)’ 875 | make_shared(_Args&&... __args) | ^~~~~~~~~~~ /usr/include/c++/11/bits/shared_ptr.h:875:5: note: template argument deduction/substitution failed: /home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/base_realsense_node.cpp:232:92: error: template argument 1 is invalid 232 | e_shared<NamedFilter>(std::make_shared<rs2::rotation_filter>(std::vector< rs2_stream >{ RS2_STREAM_DEPTH, RS2_STREAM_COLOR, RS2_STREAM_INFRARED }), _parameters, _logger)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/base_realsense_node.cpp: In member function ‘void realsense2_camera::BaseRealSenseNode::imu_callback(rs2::frame)’: /home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/base_realsense_node.cpp:522:71: error: ‘class rs2::motion_frame’ has no member named ‘get_combined_motion_data’ 522 | auto combined_motion_data = frame.as<rs2::motion_frame>().get_combined_motion_data(); | ^~~~~~~~~~~~~~~~~~~~~~~~ /home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/rs_node_setup.cpp: In member function ‘void realsense2_camera::BaseRealSenseNode::CalibConfigReadService(realsense2_camera_msgs::srv::CalibConfigRead_Request_<std::allocator<void> >::SharedPtr, realsense2_camera_msgs::srv::CalibConfigRead_Response_<std::allocator<void> >::SharedPtr)’: /home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/rs_node_setup.cpp:618:68: error: ‘class rs2::auto_calibrated_device’ has no member named ‘get_calibration_config’; did you mean ‘get_calibration_table’? 618 | res->calib_config = _dev.as<rs2::auto_calibrated_device>().get_calibration_config(); | ^~~~~~~~~~~~~~~~~~~~~~ | get_calibration_table /home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/rs_node_setup.cpp: In member function ‘void realsense2_camera::BaseRealSenseNode::CalibConfigWriteService(realsense2_camera_msgs::srv::CalibConfigWrite_Request_<std::allocator<void> >::SharedPtr, realsense2_camera_msgs::srv::CalibConfigWrite_Response_<std::allocator<void> >::SharedPtr)’: /home/lfm/ros2_ws/src/realsense-ros/realsense2_camera/src/rs_node_setup.cpp:632:48: error: ‘class rs2::auto_calibrated_device’ has no member named ‘set_calibration_config’; did you mean ‘set_calibration_table’? 632 | _dev.as<rs2::auto_calibrated_device>().set_calibration_config(req->calib_config); | ^~~~~~~~~~~~~~~~~~~~~~ | set_calibration_table gmake[2]: *** [CMakeFiles/realsense2_camera.dir/build.make:90:CMakeFiles/realsense2_camera.dir/src/base_realsense_node.cpp.o] 错误 1 gmake[2]: *** 正在等待未完成的任务.... gmake[2]: *** [CMakeFiles/realsense2_camera.dir/build.make:118:CMakeFiles/realsense2_camera.dir/src/rs_node_setup.cpp.o] 错误 1 gmake[1]: *** [CMakeFiles/Makefile2:159:CMakeFiles/realsense2_camera.dir/all] 错误 2 gmake: *** [Makefile:146:all] 错误 2 --- Failed <<< realsense2_camera [16.8s, exited with code 2]
最新发布
07-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值