Since 2023, we can use the NodeSwift module, available both as an npm package and SwiftPM, to let them talk together bidirectionally: https://github.com/kabiroberai/node-swift
It should be better for performance than JavaScriptCore.
In some cases, if you use Node as a main runtime (e.g. Electron app), you can also create a CLI binary (with Swift, C++, or Objective-C), bundle it within the Electron app, and just call this binary as CLI inside the Electron app. An example for ScreenCaptureKit can be found here: https://github.com/mukeshsoni/screencapturekit-node