#node.js #express
#node.js #выразить
Вопрос:
У меня чистая коробка Windows 8.1 с последней версией node.js установлен (0.10.29). Я пытаюсь создать простое веб-приложение:
npm install express-generator -g
express --css=compass test
cd test
npm install
npm start
После доступа к веб-серверу узел завершает работу с ошибкой. И я вообще не могу понять эту ошибку: (
Прежде всего, что это «events.js «досье? Почему нет пути? Это файл в моем приложении, какой-то внутренний файл nodejs или один из пакетов, который был установлен через npm install
? Есть какой-нибудь способ разобраться в этом?
Кроме того, две строки после этого кажутся трассировкой стека исключений… Но в нем только два элемента? Почему мое приложение не находится в трассировке стека? Почему нет полного пути к файлам? Как я могу выяснить, где они находятся и как мое приложение связано с этим исключением?
Любые подсказки приветствуются!
Ответ №1:
events.js
это системный модуль. Он имеет дело с событиями (так же, как и с именами состояний). Ошибка на самом деле не в этом модуле, если вы внимательно прочитаете документы, вы обнаружите, что:
Когда экземпляр EventEmitter выдает ошибку, типичным действием является выдача события «ошибка». События ошибок рассматриваются как особый случай в узле. Если для нее нет прослушивателя, то действие по умолчанию — распечатать трассировку стека и выйти из программы.
Итак, что-то в вашем коде выдает Error
событие, и поскольку для этого нет прослушивателей, EventEmitter (расположенный в events.js
файле) выдает ошибку.
Как вы можете видеть из сообщения об ошибке, фактическая ошибка связана с попыткой запуска чего-то, чего не существует (код в вашей программе пытается запустить дочерний процесс, но не может по некоторым причинам. Я не использую Windows и не знаю, что делает ваш проект и как он работает, поэтому вам нужно выяснить причины самостоятельно). Совет: https://github.com/joyent/node/blob/master/lib/child_process.js#L1020
Ваше приложение не находится в трассировке стека, потому что порождение процесса является асинхронным. Итак, вызванный фактический код child_process.spawn
больше не находится в стеке. Раньше было … несколько итераций цикла событий, но их больше нет. Иногда такие модули могут помочь: https://www.npmjs.org/package/superstack , https://www.npmjs.org/package/longjohn