执行时遇到问题:npm install exec-sync

Encountering problems while executing : npm install exec-sync

版本信息:

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 build 的版本问题?我迷路了。

我修好了!

以下是我作为 npm install 测试的解决方法所遵循的步骤:

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

不要使用 node-exec-sync,由于不同的原因,在我尝试过的每个 OS 上都很难安装。

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