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

Изменить

Я обновил узел и запустил «npm install -g contextify». Похоже, он установлен нормально (без ошибок), но ввод «what contextify» ничего не возвращает. Сообщение при установке contextify:

npm http GET https://registry.npmjs.org/contextify
npm http 304 https://registry.npmjs.org/contextify
npm http GET https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/bindings

  > [email protected] install /usr/local/share/npm/lib/node_modules/contextify
  > node-gyp rebuild

CXX(target) Release/obj.target/contextify/src/contextify.o
SOLINK_MODULE(target) Release/contextify.node
SOLINK_MODULE(target) Release/contextify.node: Finished
[email protected] /usr/local/share/npm/lib/node_modules/contextify
└── [email protected]

Исходный

У меня проблема с установкой contextify с помощью npm:

npm install -g contextify

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

npm http GET https://registry.npmjs.org/contextify
npm http 304 https://registry.npmjs.org/contextify
npm http GET https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/bindings

> [email protected] install /usr/local/share/npm/lib/node_modules/contextify
> node-gyp rebuild

  CXX(target) Release/obj.target/contextify/src/contextify.o
  SOLINK_MODULE(target) Release/contextify.node
  SOLINK_MODULE(target) Release/contextify.node: Finished
/usr/local/Cellar/node/0.10.1/lib/node_modules/npm/bin/node-gyp-bin/node-gyp: line 2: 73593 Segmentation fault: 11  node "`dirname "$0"`/../../node_modules/node-gyp/bin/node-gyp.js" "$@"

npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! `sh "-c" "node-gyp rebuild"` failed with 139
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 Darwin 13.0.0
npm ERR! command "/usr/local/Cellar/node/0.10.1/bin/node" "/usr/local/bin/npm" "install" "-g" "contextify"
npm ERR! cwd /Users/projects/
npm ERR! node -v v0.10.1
npm ERR! npm -v 1.2.15
npm ERR! code ELIFECYCLE

Кто-нибудь знает, что здесь происходит? Я читал, что это может иметь какое-то отношение к моему PYTHON PATH, но я не уверен, как это должно выглядеть.

Спасибо за помощь.


person ukejoe    schedule 15.01.2014    source источник
comment
Можете ли вы добавить больше вывода? Над этим разделом должно было быть сказано, в чем ошибка. Ты на Маверикс?   -  person loganfsmyth    schedule 16.01.2014
comment
Конечно, только что добавил. Я тоже на Mavericks.   -  person ukejoe    schedule 16.01.2014
comment
Похоже, это может быть ошибка в Node. Пробовали ли вы использовать более свежие версии? v0.10.1 почти 10 месяцев назад.   -  person loganfsmyth    schedule 16.01.2014
comment
Обновленный узел и поток   -  person ukejoe    schedule 16.01.2014


Ответы (3)


Исходная проблема

Ошибка сегментации: 11 узел "dirname "$0"

Похоже, это ошибка в V8, обнаруженная при компиляции с помощью Clang. Это было исправлено в более поздних версиях Node, поэтому вам необходимо обновить его. Проблема с github отслеживается здесь

Изменить проблему

Не существует contextify программы командной строки, которую вы можете запустить, поэтому which contextify нечего искать. Модуль contextify предназначен для использования в node с использованием require('contextify') для загрузки модуля.

Судя по тому, как вы это описали, кажется, что вы можете смешивать две вещи. Модули, установленные с помощью npm install -g, устанавливаются глобально и доступны для всех узловых приложений, но это не означает, что они предоставляют сценарий, который можно выполнить в командной строке. -g контролирует только путь установки модуля.

Наличие у модуля сценария командной строки, который вы можете запустить, зависит от того, определяет ли package.json модуля набор bin команд, например jshint. Когда вы устанавливаете с помощью -g, перечисленные скрипты связаны символическими ссылками вместе с node, поэтому они доступны через ваш PATH. При установке без -g скрипты bin устанавливаются в node_modules/.bin, и вам нужно будет добавить этот каталог в ваш PATH, чтобы скрипты работали.

person loganfsmyth    schedule 16.01.2014
comment
Ладно, кажется, я понимаю, о чем ты говоришь. Это поднимает еще один вопрос. Нужно ли мне что-либо менять в PATH при глобальной установке пакетов? - person ukejoe; 16.01.2014
comment
Как правило, не. Как правило, Node устанавливается в стандартный каталог приложения, который уже указан в вашем пути. - person loganfsmyth; 16.01.2014
comment
Похоже, он еще не поддерживает узел 4.x: github.com/brianmcd/contextify/issues /180 - person loganfsmyth; 22.09.2015

У меня была такая же проблема с node-gyp rebuild. Решением было установить g++:

apt-get -y install g++
person maxcnunes    schedule 14.03.2014

Не существует такой вещи, как contextify двоичный файл. В /usr/lib/node_modules/contextify/build/Release/ есть двоичный файл contextify.node (при глобальной установке в моей Ubuntu 12.04).

Просто используйте модуль в своей программе узла, используя require('contextify'), и он должен работать.

var Contextify = require('contextify');
var sandbox = Contextify(); // returns an empty contextified object.
sandbox.run('var x = 3;');
console.log(sandbox.x); // prints 3
sandbox.dispose();
person vinayr    schedule 16.01.2014
comment
Я не совсем уверен, что вы говорите. У меня нет /contextify в /usr/lib/local/node_modules. - person ukejoe; 16.01.2014