A Node.js extension for sending and receiving CAN bus messages via SocketCAN on Linux systems.
node-can is a Node.js extension that enables communication with CAN bus networks using the SocketCAN protocol on Linux. It allows developers to send and receive CAN messages, parse network descriptions, and monitor signal changes directly from JavaScript or TypeScript code. This solves the problem of integrating low-level automotive or industrial communication protocols into Node.js applications.
Developers working on automotive software, industrial automation, or embedded systems who need to interface with CAN bus networks from Node.js applications. It's particularly useful for those building diagnostic tools, data loggers, or control systems in Linux environments.
Developers choose node-can because it provides a straightforward, event-driven API for CAN bus communication without requiring C/C++ bindings or complex native modules. Its support for CAN database files and TypeScript makes it ideal for structured, maintainable projects in automotive and embedded domains.
NodeJS SocketCAN extension
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides simple JavaScript functions to send and receive extended and remote transmission CAN messages, as shown in the basic usage examples with createRawChannel.
Parses CAN network description files (e.g., .kcd) to work with structured messages and signals via DatabaseService, enabling higher-level abstractions for automotive data.
Supports onChange and onUpdate callbacks for specific signals, allowing reactive programming patterns for value changes, as demonstrated in the sample code.
Includes full TypeScript definitions for type-safe development, reducing runtime errors and improving code maintainability in complex projects.
Requires a Linux system with SocketCAN support, limiting deployment for cross-platform applications and excluding Windows or macOS users.
Installation involves building native extensions via npm run configure and build:all, which can be error-prone compared to pure JavaScript packages.
As a niche library, it has fewer community resources, plugins, and third-party tools compared to established CAN libraries in languages like Python or C++.