Установка пакета 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
в зависимости от того, какая версия актуальна)