【问题标题】:Including a command from a C library on my npm package在我的 npm 包中包含来自 C 库的命令
【发布时间】:2021-02-25 04:22:47
【问题描述】:

我有一个来自我的包所依赖的 C 库的 .exe 文件。当用户的 PATH 中已经包含此命令时,我的包可以正常工作。但是当用户安装我的包时,有什么方法,NPM 也从这个 C 库安装这个命令? 我试图在 package.json 的 bin 中包含 .exe 文件,并且当全局安装我的包时,此命令可用于提示。但不适用于 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

【问题讨论】:

    标签: node.js npm package package.json npm-package


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-07-28
      • 2020-12-16
      • 2018-11-25
      • 2016-08-02
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      相关资源
      最近更新 更多