2014-02-19 3 views
1

В последние несколько часов я пытаюсь запустить node-gd на окнах. Я попробовал несколько репозиториев и, наконец, нашел https://github.com/mikesmullin/node-gd. Когда я бегуУстановка node-gd на windows

`npm install node-gd` 

Я получаю следующее сообщение об ошибке:

node-gyp rebuild 

...node_modules\node-gd>node "C:\Program Files\nodejs\node_modules\npm\ 
bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild 
Building the projects in this solution one at a time. To enable parallel build, 
please add the "/m" switch. 
    node-gd.cpp 
..\cpp\node-gd.cpp(17): fatal error C1083: Cannot open include file: 'gd.h': No 
such file or directory [...\node_modules\node-gd\build\node_gd.vcxproj 
] 

Я думал, что я должен установить gd LIB, но когда я гугле его, почти вся информация о php_gd не о самой Lib ,

Где я могу поместить файлы gd?

Редактировать: Я скомпилировал его! Теперь я получаю:

enter image description here

+0

проверить это https://github.com/mikesmullin/node-gd/issues/14 – vinayr

+0

@vinayr теперь я получаю 'LINK: фатальная ошибка LNK1181: не удается открыть входной файл 'gd.lib' [ ... \ node_m odules \ node-gd \ build \ node_gd.vcxproj] ' – Deepsy

+0

@Deepsy: нашли ли вы какое-либо решение? – darma

ответ

1

Я прошел через этот процесс в последнее время и столкнулся с теми же проблемами, но не смог найти какие-либо размещены шаги для решения проблемы. Я понимаю, что этой теме сейчас почти 1,5 года, но я отправлю здесь свои полные шаги по установке, если это поможет кому-то другому.

Предполагается, что вы уже создали библиотеку GD (https://github.com/libgd/libgd/releases) и будете использовать GD DLL.

  1. Загрузить пакет узла Б-га из https://www.npmjs.com/package/node-gd

    Примечание: Не запустить «NPM установить узел-Г.Д.» из командной строки, так как это будет автоматически загружать и запускать установку. Сначала вам нужно внести локальные изменения в пакет, а затем установить его локально.

  2. После извлечения откройте файл binding.gyp, например. расположен в (downloads_folder) \ узловой Г.Д. \ binding.gyp

  3. Изменить эту строку:

    "libraries": ["-lgd"], 
    

    на имя библиотеки импорта GD DLL, который был составлен, например, для "libgd.lib":

    "libraries": ["-llibgd"], 
    
  4. Добавить исходный GD путь к "include_dirs", например:

    "include_dirs": [ 
        "<!(node -e \"require('nan')\")", 
        "(path_to_gd)/src" # <-- THIS ENTRY 
    ], 
    
  5. Добавить скомпилированный каталог библиотеки GD для настройки компоновщика VS при «условиях "поле для окон, например:

    Примечание: по некоторым причинам я не мог получить каталог библиотеки для правильной работы с помощью обычных обязательных спецификаций Gyp, поэтому мне пришлось прибегнуть к этому ...

    "conditions": [ 
        [ "OS=='freebsd'", { 
        "libraries": ["-L/usr/local/lib"], 
        "include_dirs": ["/usr/local/include"] 
        }], 
        [ "OS=='mac'", { 
        "libraries": ["-L/usr/local/lib", "-L/opt/local/lib"], 
        "include_dirs": ["/usr/local/include", "/opt/local/include"] 
        }], 
        [ "OS=='win'", { # <-- THIS ENTRY 
        "msvs_settings": { 
         "VCLinkerTool": { 
         "AdditionalOptions": ["/LIBPATH:(path_to_gd)/build_msvc12_x64"], 
         }, 
        }, 
        }], 
    ] 
    
  6. Сохраните файл binding.gyp и установить пакет локально, например:

    npm install (downloads_folder)\node-gd 
    
  7. Если вы пытаетесь использовать узел-Gd в этой точке (через требуется), вы получите " модуль не может быть найден "ошибка, которую OP получал выше.Проблема не в том, что модуль не может быть найден, он не может найти GD DLL (сообщение об ошибке ужасно). Так, скопируйте GD .dll файл в выходной каталог узла Gd (она должна быть рядом с узлом-Г.Д. бинарных файлов, которые были просто построены), например .:

    copy (path_to_gd)\build_msvc12_x64\libgd.dll (path_to_node_modules)\node-gd\build\Release\libgd.dll 
    
  8. Это должно быть! Надеюсь, все будет работать на этом этапе.

+0

Итак, я просматривал свои старые вопросы и обнаружил, что я не отметил это. Я буду отмечать это как ответ, так как это возможное решение. Спасибо за попытку. – Deepsy