【问题标题】:Encountering problems while executing : npm install exec-sync执行时遇到问题:npm install exec-sync
【发布时间】:2026-02-01 11:20:10
【问题描述】:

版本信息:

node@4.6.0
node-gyp@3.4.0
npm@2.15.9 

我尝试安装以下依赖项:

 "canvas": "^1.1.6",
 "exec-sync": "^0.1.6",
 "fabric": "^1.6.0",
 "request": "^2.67.0",
 "word": "^0.2.4" 

所以我做了一个 npm install 安装了以下依赖项:

 "canvas": "^1.1.6",   
 "fabric": "^1.6.0",
 "request": "^2.67.0",
 "word": "^0.2.4" 

但是 exec-sync 会出现以下错误:

1443 verbose stack Error: ffi@1.2.5 install: `node-gyp rebuild`
1443 verbose stack Exit status 1
1443 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/lib/utils/lifecycle.js:217:16)
1443 verbose stack     at emitTwo (events.js:87:13)
1443 verbose stack     at EventEmitter.emit (events.js:172:7)
1443 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/lib/utils/spawn.js:24:14)
1443 verbose stack     at emitTwo (events.js:87:13)
1443 verbose stack     at ChildProcess.emit (events.js:172:7)
1443 verbose stack     at maybeClose (internal/child_process.js:829:16)
1443 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)

此时我有点迷茫,我尝试了以下方法:

  1. 删除所有 node_modules 并尝试全新安装;
  2. 尝试单独安装模块;

是 node.js 与 exec-sync 构建的版本问题吗?,我迷路了。

【问题讨论】:

    标签: node.js npm npm-install node-gyp


    【解决方案1】:

    我修好了!

    【讨论】:

      【解决方案2】:

      以下是我对 npm install 进行测试的解决方法:

      • package.json 中删除了exec-sync 依赖项
      • npm install ffi(安装最新版本ok)
      • git clone https://github.com/jeremyfa/node-exec-sync
      • 编辑node-exec-sync/package.json 以删除ffi 依赖行
      • npm install ./node-exec-sync 然后 npm install 完成 ok

      【讨论】:

      • 行得通,谢谢!请注意,您需要从 exec-sync 依赖项中删除 ffi 才能构建 exec-sync。但是要运行exec-sync相关程序,还是需要单独安装ffi。这就是为什么我最初对您的解决方案感到困惑,但现在我明白了。
      【解决方案3】:

      不要使用 node-exec-sync,因为不同的原因,在我尝试过的每个操作系统上都很难安装。

      改为使用 https://www.npmjs.com/package/cross-spawn ,它没有任何这些不可构建的本机依赖项。它基本上是node-exec-sync 或内置child_process API 的全面更好的替代品。

      【讨论】: