2013-08-21 2 views
0

Когда я иду в узел и попытаться потребовать libyaml я получаю:ошибка «неверный заголовок ELF» при загрузке модуля libyaml

> require('libyaml') 
Error: /home/ubuntu/shadow/node_modules/libyaml/build/Release/binding.node: invalid ELF header 
at Object.Module._extensions..node (module.js:485:11) 
at Module.load (module.js:356:32) 
at Function.Module._load (module.js:312:12) 
at Module.require (module.js:362:17) 
at require (module.js:378:17) 
at Object.<anonymous> (/home/ubuntu/shadow/node_modules/libyaml/index.js:7:15) 
at Module._compile (module.js:449:26) 
at Object.Module._extensions..js (module.js:467:10) 
at Module.load (module.js:356:32) 
at Function.Module._load (module.js:312:12) 

Я использую node version 0.8.12 и libyaml version 0.2.1. Любопытно, что ошибка зависит от сервера, но, похоже, она не основана на номерах версий, поскольку она отлично работает на одном из ящиков с одинаковыми версиями.

+1

Угадай модуль не установлен для правильной архитектуры машины. Попробуйте 'npm install libyaml' на сервере. – vinayr

+0

приятно, что его обновляет, и он работает – babonk

+0

вопрос - что делать, если у меня есть несколько архитектур? npm устанавливает модули в исходный элемент управления вместо установки из списка при развертывании ... так что если установка была сделана для одной архитектуры на dev, как вы можете развертывать другую в процессе постановки или производства? – babonk

ответ

0

Спасибо vinayr за то, что он посоветовал мне запустить npm install на производственной коробке. Проблема в том, что им нужно было установить npm по-разному. Я решил, что с помощью команды pre-deploy в поле в качестве части развертывания. Задача решена.

1

Можно также использовать 'npm rebuild module-name', чтобы перекомпилировать код C на машине развертывания как часть сценария предварительной установки.

Documentation

Смежные вопросы