2010-11-14 4 views
1

У меня есть структура каталогов, как так:node.js: Почему NODE_DEBUG = 1 не работает? (Пытаясь отладки требуется() ошибка)

project 
    lib 
    paperboy 
    redis-client 
    node-cookie 
    srv 
    main.js 
    ... 

Я начинаю main.js из директории проекта:

$ node srv/main.js 

В main.js я можно сделать:

paperboy = require('./lib/paperboy'); 

Однако это не удается:

redis = require('./lib/redis-client'); 

Аналогичным образом, если я запускаю интерактивный узел в каталоге «project», мне может потребоваться paperboy, но не redis-client. Ошибки я получаю:

> require('./lib/redis-client') 
Error: Cannot find module './lib/redis-client' 
    at resolveModuleFilename (node.js:265:13) 
    at loadModule (node.js:231:20) 
    at require (node.js:291:14) 
... 

Глядя на источник resolveModuleFilename(), он пытается напечатать строку отладки, что я не вижу:

debug("looking for " + JSON.stringify(id) + " in " + JSON.stringify(paths)); 

Я попытался это позволяет через экспортируйте NODE_DEBUG = 1, но я все еще не вижу эту отладочную печать при попытке потребовать.

Что я делаю неправильно, пытаясь отладить эту отладку? И, во-вторых, почему бы бумажный груз нормально, но redis-client не может быть найден?

Дополнительная информация: Вот полный список файлов/каталогов в «Lib» директории:

lib 
lib/cookie-node 
lib/cookie-node/package.json 
lib/cookie-node/LICENSE.txt 
lib/cookie-node/README.markdown 
lib/cookie-node/example 
lib/cookie-node/example/ex1.js 
lib/cookie-node/index.js 
lib/redis-client 
lib/redis-client/package.json 
lib/redis-client/TODO.md 
lib/redis-client/examples 
lib/redis-client/examples/redis-version.js 
lib/redis-client/examples/using-kiwi.js 
lib/redis-client/examples/subscriber.js 
lib/redis-client/examples/publisher.js 
lib/redis-client/examples/.redis-version.js.swp 
lib/redis-client/examples/README.md 
lib/redis-client/seed.yml 
lib/redis-client/LICENSE 
lib/redis-client/test 
lib/redis-client/test/test_throw_from_callback.js 
lib/redis-client/test/test_shutdown_reconnect.js 
lib/redis-client/test/test.js 
lib/redis-client/test/sample.png 
lib/redis-client/.gitignore 
lib/redis-client/lib 
lib/redis-client/lib/redis-client.js 
lib/redis-client/README.md 
lib/paperboy 
lib/paperboy/package.json 
lib/paperboy/seed.yml 
lib/paperboy/LICENSE.txt 
lib/paperboy/example 
lib/paperboy/example/basic.js 
lib/paperboy/example/webroot 
lib/paperboy/example/webroot/img 
lib/paperboy/example/webroot/img/paperboy.jpg 
lib/paperboy/example/webroot/index.html 
lib/paperboy/index.js 
lib/paperboy/lib 
lib/paperboy/lib/paperboy.js 
lib/paperboy/README.md 

Либерал каталогов являются распакованные .tar.gz файлы из GitHub, переименовал совпадает с именем модуля от файлы package.json.

ответ

3
  1. Node.js ищет requirable файлы относительно расположения сценария, так что вы должны использовать

    газетчик = требуется ('../ Lib/газетчик');

    in srv/mail.js.

  2. Вы должны настроить node.js с параметром --debug, а затем заставить его использовать любые функции отладки, как я знаю.

2

Причина, по которой это не работает, потому что узел.JS будет автоматически включать в сценарий, если он имеет имя index.js

Узел Cookie и Paperboy выглядеть следующим образом:

lib/cookie-node/index.js 
lib/paperboy/index.js 

Redis Client выглядит следующим образом:

lib/redis-client/lib/redis-client.js 

Вам нужно изменить ваш требуйте до:

var redis = require('./lib/redis-client/lib/redis-client'); 

По существу узел ищет требуемые файлы как так:

var redis = require('./lib/redis-client'); 

    ./lib/redis-client.js 
    ./lib/redis-client/index.js // (if redis-client is a directory). 

Как нет index.js файла, узел не может продолжать смотреть в Lib каталоге ./lib/redis-client/ и не будет включать в себя файл, так как он не знает, что он называется или где он должен быть расположен.

+0

Это большое описание общей системы модуля JavaScript. Но он не отвечает на реальный вопрос: почему NODE_DEBUG не работает, как документировано? –

+0

Я предположил, что ответ Санни за то, почему NODE_DEBUG не работал, был правильным, но почувствовал, что фактический контент вопроса не был полностью им дан. –

10

Вы хотите экспортировать NODE_DEBUG=module, не =1

 Смежные вопросы

  • Нет связанных вопросов^_^