2015-02-04 2 views
3

Я развертываю приложение node-js для heroku, для которого требуется пакет npm imagemagic-native.Добавить include dir для узла gyp

Я сделал buildpack установить libmagick++-dev и экспортировать путь включают:

export INCLUDE_PATH="$BUILD_DIR/.apt/usr/include:$INCLUDE_PATH" 
export CPATH="$INCLUDE_PATH" 
export CPPPATH="$INCLUDE_PATH" 

При установке imagemagic-native пакет с npm install, узел-лавочка вызывается для компиляции это двоичные файлы. Однако я получаю эту ошибку:

remote:  > [email protected] 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 

Это говорит о том, что НКУ не видит файлы заголовков для libmagick++, потому что $CCPATH не доступен для него.

Как я могу сделать npm install добавить путь к списку include_dirs, который использует node-gyp?

Более подробно о моем случае использования здесь: Using Magick++ in a node.js application on heroku

ответ

4

Try:

установки переменной окружения CXX =/путь/к/г ++ -Ipath/к/включать

, а затем перезапуск обработать. Если вы используете Баш это делается

export CXX="/path/to/g++ -Ipath/to/include" 

/путь/к/включают быть где отсутствует заголовок Magick ++. Ч расположен

, если это не работает, вы можете вручную должны установить CXX включить -I в make-файл в/tmp/build_720834c3a32b65d69ae603d7c618e20f/node_modules/imagemagick-native/build, затем cding в этот каталог и вызвать make.

+0

Этот экспорт работал! Большое спасибо. Последний вариант не был полностью автоматизированным. –

+0

Последний всегда вариант, в отличие от первого, если вы знаете достаточно. – Qwertyzw

4

Я потратил некоторое время, пытаясь ответить на тот же вопрос. В конце концов, я нашел правильный способ сделать это here. Вам необходимо установить 'include_dirs' недвижимость в ~/.node-gyp/x.x.x/common.gypi. Это, как я установил включаемые реж на Mac OS в /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.

+0

Отлично, спасибо. Для меня, в OX 10.11.5, common.gypi находился в ~/.node-gyp/x.x.x/include/node. –

1

Вы также можете использовать опцию include_dirs в файле привязки проекта project.gyp. Подробнее о доступных вариантах можно узнать на странице format description page.