npm не создает релиз Contextify - путь к узлу не найден? - PullRequest
2 голосов
/ 31 августа 2011

Я работаю над упаковкой приложения для узла, которое будет развернуто на сервере без npm.Я думаю, что я понял это - я использовал npm, чтобы установить все зависимости в локальной папке node_modules в соответствии с файлом package.json.

Кажется, все работает хорошо, но когда я пытаюсь запустить узелфайл с сервера, он жалуется, что он Cannot find module '../build/Release/contextify'.

Это имеет смысл, потому что в node_modules/.npm/contextify/0.0.4/package/lib/contextify.js он запрашивает файл, о котором идет речь, а node_modules/.npm/contextify/0.0.4/package/build не имеет каталога с именем Release.Я предположил, что npm просто не собрал релиз, поэтому я переключился на машину разработчика и запустил npm install - он не жаловался, и, похоже, он собирал contextify:

$ sudo npm install

> contextify@0.0.4 preinstall /path/to/node/stuff/node_modules/contextify
> node-waf clean || true; node-waf configure build

'clean' finished successfully (0.014s)
Setting srcdir to                        : /path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package 
Setting blddir to                        : /path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package/build 
Checking for program g++ or c++          : /usr/bin/g++ 
Checking for program cpp                 : /usr/bin/cpp 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for node path                   : not found 
Checking for node prefix                 : ok /usr/local/Cellar/node/0.4.5 
'configure' finished successfully (0.043s)
Waf: Entering directory `/path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package/build'
[1/2] cxx: src/contextify.cc -> build/default/src/contextify_1.o
[2/2] cxx_link: build/default/src/contextify_1.o -> build/default/contextify.node
Waf: Leaving directory `/path/to/node/stuff/node_modules/.npm/contextify/0.0.4/package/build'
'build' finished successfully (0.370s)

к сожалению, каталог package/build по-прежнему не имеет папки Release.

Итак, я предполагаю, что вопрос заключается в том, не удается ли построить contextify, потому что путь к моему узлу не задан (я попытался export NODE_PATH, но, похоже, это не помогло ...) или, если есть какая-то другая причина, по которой, по-видимому, созидание не создается,

Может быть, мне не хватает чего-то большего?

Ответы [ 3 ]

3 голосов
/ 28 июня 2012

Исправление этой ошибки - просто удалить каталог "build" waf, а затем перенастроить. Каким-то образом waf кеширует неверный результат конфигурации из-за отсутствия NODE_PATH, поэтому, даже если вы затем запомните и установите его, он на самом деле ничего не скомпилирует, несмотря на то, что configure сообщает об отсутствии ошибок. Глупо!

export NODE_PATH="/usr/local/lib/node_modules/"
rm -fr build
node-waf configure
node-waf build
3 голосов
/ 02 сентября 2011

У меня тоже такая же проблема,

Возможно, вы захотите добавить вопрос в github, автор может помочь вам раньше, чем здесь. https://github.com/brianmcd/contextify/issues?sort=created&direction=desc&state=closed&page=1

1 голос
/ 17 сентября 2011

Я думаю, что ваша локальная версия nodejs v.0.4. * И версия вашего сервера nodejs v0.5. *

Убедитесь, что вы используете одну и ту же версию nodejs для dev и production. Если вы переключитесь на v0.4. * Бьюсь об заклад, ваша проблема будет решена. Я заметил, что конфигурация node-waf 'build' переключена с 'default' на 'Release' где-то в версиях 5. *.

Однако одно предупреждение:

Некоторые пакеты npm используют (скомпилированные) двоичные файлы. I.M.O, вам не следует связывать «скомпилированные» node_modules в один пакет, чтобы развернуть его на «другой» платформе без npm. Это вопрос времени, прежде чем вы столкнетесь с проблемами. (как показано выше)

...