Установка пакета 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! contextify@0.1.7 install: `node-gyp rebuild`
npm ERR! `sh "-c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the contextify@0.1.7 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 contextify@0.1.7 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

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

3 ответа

Решение

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

sudo npm install -g npm

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

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

если вы выполнили стандартную apt-get on node, это вполне может отстать от времени, и принятие последней версии пакета может исправить это

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

4.0.0

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

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

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

sudo chown -R $USER /usr/local

а также

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

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

Другие вопросы по тегам