npm安装画布死了“clang:错误:没有这样的文件或目录:'{{}'”

时间:2014-12-02 03:56:02

标签: node.js npm clang node-gyp

我在安装运行node-gyp rebuild的任何节点包时遇到此错误:

  SOLINK_MODULE(target) Release/canvas-postbuild.node
clang: error: no such file or directory: '{{}'
make: *** [Release/canvas-postbuild.node] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:810:12)
gyp ERR! System Darwin 14.0.0
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/arkadiy/node-canvas
gyp ERR! node -v v0.10.33
gyp ERR! node-gyp -v v1.0.1
gyp ERR! not ok

我有npm 1.4.28并且所有/ usr / local都对我不满意。 clang是最近的事:

Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.0.0
Thread model: posix

错误完全不可识别(严重的是,尝试一下),我甚至无法分辨调用clang的位置,因为堆栈跟踪仅适用于回调处理程序。看起来好像是shell替换/ xargs问题?

2 个答案:

答案 0 :(得分:2)

我想说你的node / npm install是可疑的。如果你从他们的github开始

https://github.com/Automattic/node-canvas

并下载回购

git clone https://github.com/Automattic/node-canvas.git

cd node-canvas 
npm install .    

注意上面命令中的句点 - 获取上游依赖项

我刚刚做了这个并且一切都很好 - 如果你上面遇到错误,那么我建议你删除node / npm并从源代码安装。以下步骤为您提供了源

的干净节点/ npm安装

开始新的删除先前节点和npm安装以及这些:

sudo mv ~/.npmrc ~/.npmrc_ignore
sudo mv ~/.npm   ~/.npm_ignore
sudo mv ~/tmp    ~/tmp_ignore
sudo mv ~/.npm-init.js ~/.npm-init.js_ignore

http://nodejs.org/download/

下载源代码
cd node-v0.10.33

将环境变量NODE_PATH定义为后续模块安装的目录

export NODE_PARENT=/some/desired/install/path_goes_here

export NODE_PARENT=/usr/local/bin/nodejs   # use this ONLY if you MUST install as root (sudo)
export NODE_PARENT=${HOME}/nodejs-v0.10.33 # use this if you want to install modules as yourself

export PATH=${NODE_PARENT}/bin:${PATH}
export NODE_PATH=${NODE_PARENT}/lib/node_modules

./configure   --prefix=${NODE_PARENT}

make
make install

将其放入上面--prefix

定义的目录中

使用语法时:npm install -g some_cool_module -g for global将它安装到dir $ NODE_PATH而不是你的$ PWD

重要提出以上三个导出xxx = yyy 命令到你的〜/ .bashrc或其他一些来保持这些环境变量的变化

答案 1 :(得分:0)

原来我有一个文字LDFLAGS='{} -L/usr/local/opt/openssl/lib',因为shell没有扩展。没关系!