Node.js出现奇怪的错误信息

4

最近我收到了很多奇怪的错误信息,现在甚至无法启动app.js。以下错误信息意味着什么?有人知道如何解决吗?

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
TypeError: Cannot read property 'port' of null
    at Object.<anonymous> (/Users/henrikpetersson81/node/last/test4/app.js:15:64)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)
    at Function._load (module.js:308:12)
    at Array.0 (module.js:479:10)
    at EventEmitter._tickCallback (node.js:192:40)

2
可能是语法错误,但除非你发布代码,否则我们无法提供帮助。 - Jonathan Rowny
这是一个运行时错误,而不是语法错误。语法错误会显示“SyntaxError”。 - Peter Lyons
你能展示一下你的代码吗?如果你正在使用 Express,请注意 Express 3.0 版本已经改变了其工作方式。 - Menztrual
6个回答

4
端口可能已经被占用了。我曾经遇到过这种情况。

2

最近看到了一个类似的问题。你可能遇到了相似的问题。也许你正在使用的库(或者你自己的代码)正在尝试在app.listen完成之前和相应的回调被调用之前访问app.address().port


1
我找到了一篇文章,解释了相同的错误信息,问题出在端口上。我将端口从3000改为5959,现在它可以工作了。不过奇怪的是,这个端口突然停止工作了。

1
你是否有另一个应用程序,比如 Ruby on Rails 应用程序,已经在端口 3000 上监听了? - Peter Lyons
1
实际上不是这样的,所以有点奇怪。 - holyredbeard
和我一样!3000端口没有被其他应用程序占用,但NodeJS无法监听它。真的很奇怪! - Michael Z

0

我遇到了类似的问题,其中端口:3000仅由node.js脚本使用。 杀掉PID对于端口:3000对我有用。

lsof -i :3000
kill -9 <PID>

0

你的本地主机监听的端口被其他应用程序/服务使用了。尝试在以下位置更改端口为不同的端口号,例如8888或3000,然后你就可以继续了。

/Users/henrikpetersson81/node/last/test4/app.js


0

我曾经遇到过同样的问题。原来在使用nodemon(或其他简单的工具)时,当你杀掉node服务器时,它可能没有被完全杀死,因此一个服务器仍在监听3000端口。为了解决这个问题,只需关闭终端并重新启动服务器即可。(在Ubuntu机器上,使用node和Nodemon)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接