Установка пакета NodeJS contextify приводит к ошибке

Я 1 час в NodeJS, так что терпите меня. Один из пакетов, который требуется моему проекту, — это JSDom. Изучив большую часть Интернета, я обнаружил, что JSDOm имеет зависимость, называемую contextify, которая каким-то образом обрабатывается в самой установке JSDom. Итак, что я делаю:

sudo npm install jsdom 

и все идет нормально, пока я не получаю следующее:

gyp WARN install got an error, rolling back install
gyp ERR! rebuild error Error: EACCES, stat '/root/.node-gyp/0.8.2'
gyp ERR! not ok
npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! `sh "-c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the contextify package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls contextify
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.2.0-60-generic
npm ERR! command "/opt/node/bin/node" "/opt/node/bin/npm" "install" "contextify"
npm ERR! cwd /opt/node
npm ERR! node -v v0.8.2
npm ERR! npm -v 1.1.36
npm ERR! code ELIFECYCLE
npm ERR! message [email protected] install: `node-gyp rebuild`
npm ERR! message `sh "-c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /opt/node/npm-debug.log
npm ERR! not ok code 0

ЗАДУМАН!!!

Я обнаружил, что для запуска contextify в Ubuntu у меня должны быть make, python и G++. У меня есть все. Итак, что именно я здесь упускаю?

К вашему сведению, команды, предшествующие попытке установки JSDOM:

mkdir ~/.node-gyp
chmod -R 777 ~/.node-gyp

Я также пробовал следующее:

npm install -g node-gyp
npm install contextify

При второй команде я сталкиваюсь с той же проблемой.


person Parijat Kalia    schedule 09.04.2014    source источник
comment
вам может потребоваться выполнить sudo npm install -g npm и повторить попытку (это сработало на моем Mac) или посмотреть это stackoverflow.com/questions/21148917/. если вы сделали стандартный apt-get на узле, это может быть отстало от времени, и использование последней версии пакета может исправить это.   -  person KeepCalmAndCarryOn    schedule 09.04.2014
comment
Я бы сначала обновился до более новой версии Node. Вы используете 0.8.2 (это даже не последний выпуск в серии 0.8.x), но 0.10.26 — это последний стабильный выпуск.   -  person Louis    schedule 09.04.2014
comment
@KeepCalmAndCarryOn вот и все, я сделал это, и все работает нормально!   -  person Parijat Kalia    schedule 09.04.2014
comment
Вы должны опубликовать это как ответ, я приму   -  person Parijat Kalia    schedule 09.04.2014
comment
Я разместил это как ответ, спасибо   -  person KeepCalmAndCarryOn    schedule 10.04.2014


Ответы (3)


вам может понадобиться сделать

sudo npm установить -g npm

и попробуйте еще раз (это сработало на моем Mac)

или см. это Ошибка при установке contextify-node-gyp перестроить не удалось

если вы сделали стандартный apt-get на узле, это может быть отстало от времени, и использование последней версии пакета может исправить это.

person KeepCalmAndCarryOn    schedule 09.04.2014

Ситуация изменилась: jsdom >= 4.0.0 больше не использует contextify:

4.0.0

Этот выпуск основан на недавно переработанном модуле vm io.js, чтобы устранить зависимость от собственного модуля Contextify. jsdom теперь должно быть намного проще в использовании и установке, не требуя набора инструментов компилятора C++!

И если вам нужен старый без контекста, попробуйте jsdom-no-contextify .

person mik01aj    schedule 18.11.2015

Проблема node-gyp EACCES может быть решена путем изменения доступа и иногда установки версии node-gyp python для npm следующим образом:

sudo chown -R $USER /usr/local

и

npm config set python /usr/bin/python2.7

(Измените python2.7 на python2.6 в зависимости от того, какая версия актуальна)

person Rama Prashanth    schedule 05.06.2016