在我的 npm 包中包含来自 C 库的命令

Including a command from a C library on my npm package

我有一个来自我的程序包所依赖的 C 库的 .exe 文件。当用户已经将此命令包含在他的 PATH 中时,我的包工作正常。但是有什么办法可以让用户安装我的包时,NPM 也从这个 C 库安装这个命令? 我尝试将 .exe 文件包含在 package.json 上的 bin 中,当全局安装我的包时,此命令可用于提示。但不适用于 child_process.spawn。当我的代码尝试使用它时,我收到一个错误:

Error: spawn fpcalc ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:267:19)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
Emitted 'error' event on ChildProcess instance at:
at Process.ChildProcess._handle.onexit (internal/child_process.js:273:12)
at onErrorNT (internal/child_process.js:469:16)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
errno: 'ENOENT',
code: 'ENOENT',
syscall: 'spawn fpcalc',
path: 'fpcalc',

// 编辑

基本上我需要在安装包时设置一个 PATH 变量,因此命令“fpcalc”将可用于 child_process

我找到了解决问题的办法。实际上在 package.json 上包含一个 .exe 是可行的!问题实际上出在方法 child_process.spawn 上。出于某种原因,它不执行外部命令,至少在我尝试时是这样。所以我最终使用了 child_process.exec 并且工作正常。

// package.json
{
 "bin": {
      "your-command": "file_path.exe"
 }
}

顺便说一句,我创建了一个实现 C 库的库来识别音乐。查看更多 here.