我正在将一个node-js应用程序部署到heroku,需要使用npm包imagemagic-native。
我制作了buildpack install libmagick++-dev
并导出了包含路径:
export INCLUDE_PATH="$BUILD_DIR/.apt/usr/include:$INCLUDE_PATH"
export CPATH="$INCLUDE_PATH"
export CPPPATH="$INCLUDE_PATH"
在使用imagemagic-native
安装npm install
包时,会调用node-gyp来编译它的二进制文件。但是我收到了这个错误:
remote: > imagemagick-native@1.7.0 install /tmp/build_720834c3a32b65d69ae603d7c618e20f/node_modules/imagemagick-native
remote: > node-gyp rebuild
remote:
remote: make: Entering directory `/tmp/build_720834c3a32b65d69ae603d7c618e20f/node_modules/imagemagick-native/build'
remote: CXX(target) Release/obj.target/imagemagick/src/imagemagick.o
remote: In file included from ../src/imagemagick.cc:9:
remote: ../src/imagemagick.h:1:22: warning: Magick++.h: No such file or directory
这表明gcc没有看到libmagick++
的标头文件,因为$CCPATH
不可用。
如何让npm install
添加node-gyp使用的include_dirs
列表的路径?
有关我的用例的更多详细信息,请访问:Using Magick++ in a node.js application on heroku
答案 0 :(得分:4)
尝试:
将环境变量CXX = / path /设置为/ g ++ -Ipath / to / include
然后重新启动该过程。如果您正在使用bash,则可以通过
完成export CXX="/path/to/g++ -Ipath/to/include"
/ path / to / include是缺少标题Magick ++。h所在的位置
如果不起作用,您可以手动设置CXX以在-file / build_720834c3a32b65d69ae603d7c618e20f / node_modules / imagemagick-native / build的makefile中包含-I,然后调入该目录并调用make。
答案 1 :(得分:4)
我花了一些时间试图回答同样的问题。最后,我找到了正确的方法here。您需要在'include_dirs'
中设置~/.node-gyp/x.x.x/common.gypi
属性。
这就是我将Mac OS上的include目录设置为/opt/local/include/
(这是所有macports intalls去的地方):
...
['OS=="mac"', {
'defines': ['_DARWIN_USE_64_BIT_INODE=1'],
'include_dirs': ['/opt/local/include'],
'xcode_settings': {
'ALWAYS_SEARCH_USER_PATHS': 'NO',
...
虽然我不确定它是否适用于heroku环境。
答案 2 :(得分:1)
您还可以在项目binding.gyp文件中使用“include_dirs”选项。详细了解format description page上的可用选项。