我在安装运行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问题?
答案 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
下载源代码
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没有扩展。没关系!