RobotWebTools / rclnodejs

Node.js version of ROS 2.0 client
https://docs.ros.org/en/humble/Concepts/Basic/About-Client-Libraries.html?highlight=rclnodejs#community-maintained
Apache License 2.0
311 stars 70 forks source link

slam toolbox causes bugs #955

Closed locmark closed 4 months ago

locmark commented 4 months ago

Description

Using rclnodejs with slam-toolbox creates bug, that makes impossible to generate ros messages.

When installing rclnodejs this error does not occur but my custom ros messages are missing TypeScript definitions. Applying proposed patch fixes this problem.

Steps To Reproduce

sudo apt install ros-iron-slam-toolbox

and in new console:

npx generate-ros-messages

Expected Behavior

Start generation of ROS2 JavaScript messages...
Generation complete.

Actual Behavior

Start generation of ROS2 JavaScript messages...
Caught error: Error: Cannot find module '../../generated/slam_toolbox/slam_toolbox__srv__AddSubmap_Request.js'
Require stack:
- /home/k/backend/node_modules/rclnodejs/generated/slam_toolbox/slam_toolbox__srvs__AddSubmap_Event.js
- /home/k/backend/node_modules/rclnodejs/lib/interface_loader.js
- /home/k/backend/node_modules/rclnodejs/rostsd_gen/index.js
- /home/k/backend/node_modules/rclnodejs/scripts/generate_messages.js

quick fix: use 'patch-package' package with this file rclnodejs+0.26.0.patch

diff --git a/node_modules/rclnodejs/rostsd_gen/index.js b/node_modules/rclnodejs/rostsd_gen/index.js
index dbb9b64..6aca532 100644
--- a/node_modules/rclnodejs/rostsd_gen/index.js
+++ b/node_modules/rclnodejs/rostsd_gen/index.js
@@ -64,6 +64,7 @@ function getPkgInfos(rootDir) {

     for (let filename of files) {
       const typeClass = fileName2Typeclass(filename);
+      if (typeClass.type !== 'srv' && typeClass.type !== 'action' && typeClass.type !== 'msg') continue;
       if (
         !typeClass.type ||
         pkgFilters.matchesAny({