Skip to content

@matter/nodejs-ble should use dynamic import to be truly optional #618

@julienkolani

Description

@julienkolani

Version

0.6.5

Node.js Version

20.18.2

Operating System

Linux (ARM64)

Issue Description

@matter/nodejs-ble is imported statically but declared as optionalDependency, causing crashes when not installed.

File: ws-controller/dist/esm/controller/MatterController.js

import "@matter/nodejs-ble";  //  Crashes if module missing

### Steps to Reproduce

1. Install matter-server in an environment where optional dependencies are excluded
2. Run: `node /usr/lib/node_modules/matter-server/dist/esm/MatterServer.js`
3. Error occurs


### Server Logs

```shell
node /usr/lib/node_modules/matter-server/dist/esm/MatterServer.js
node:internal/modules/esm/resolve:854
  throw new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);
        ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@matter/nodejs-ble' imported from /usr/lib/node_modules/matter-server/node_modules/@matter-server/ws-controller/dist/esm/controller/MatterController.js
    at packageResolve (node:internal/modules/esm/resolve:854:9)
    at moduleResolve (node:internal/modules/esm/resolve:927:18)
    at defaultResolve (node:internal/modules/esm/resolve:1169:11)
    at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:542:12)
    at ModuleLoader.resolve (node:internal/modules/esm/loader:510:25)
    at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:239:38)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:96:40)
    at link (node:internal/modules/esm/module_job:95:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

Node.js v20.18.2

Device Information

No response

Additional Context

Solution

Use dynamic import

Pre-submission Checklist

  • I am running an Alpha/Beta version of the Matter.js server
  • I have included the complete server logs (not truncated)
  • I have checked existing issues to avoid duplicates

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions