我有一个干净的Windows 8.1框,安装了最新的node.js(0.10.29)。我正在尝试制作一个简单的网络应用程序:
npm install express-generator -g
express --css=compass test
cd test
npm install
npm start
访问Web服务器后,节点退出并显示错误。我根本无法理解这个错误:(
首先,这个“events.js”文件是什么?为什么没有路径?它是我的应用程序中的文件,一些nodejs内部文件还是通过npm install
安装的一个软件包?有什么方法可以解决这个问题吗?
此外,之后的两行似乎是一个异常堆栈跟踪......但是只有两个项目呢?为什么我的应用程序不在堆栈跟踪上?为什么没有文件的完整路径?我怎样才能弄清楚他们的位置以及我的应用程序如何连接到此例外?
欢迎任何提示!
答案 0 :(得分:1)
events.js
是一个系统模块。它处理事件(就像命名状态一样)。该模块中的错误实际上并非如此,如果您仔细阅读文档,则会发现:
当EventEmitter实例遇到错误时,典型的操作 是发出错误'事件。错误事件被视为特殊事件 节点中的case。如果没有侦听器,则默认操作 是打印堆栈跟踪并退出程序。
因此,代码中的某些内容会发出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