使用localhost 3030的Express服务器,但它没有提供任何服务。为什么呢?

时间:2017-10-03 20:15:00

标签: postgresql express

我使用Express.js / Postgres作为我的服务器,并将其设置为在端口3030上运行:

app.set('port', process.env.PORT || 3030);

我正在听它:

app.listen(() => {
    console.log( `The server is running on port '${app.get('port')}'` )
})

在控制台中我看到了:

[nodemon] 1.12.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node server/server.js`
The server is running on port '3030'

当我在浏览器中访问localhost:3030时发现问题。而不是我想要的页面,我得到了这个:

This site can’t be reached
localhost refused to connect.
Search Google for localhost 3030
ERR_CONNECTION_REFUSED

我' VE关闭任何和所有的终端(没有可能被从另一个窗口运行),I'已经试过从GitHub克隆回落之前删除整个目录。我甚至通过Brew卸载了Postgres。我'已经遇到这个问题之前,在这一点上,我杀了通过他们的PID,使用特异性端口和神秘的帮助了程序,但它'不是工作的这段时间

这里是我的Github回购的link

任何帮助?

2 个答案:

答案 0 :(得分:0)

问题是app.set(' port')。这并没有设置适用于app.listen()的端口。相反,它设置了可以使用app.get(' port')访问的变量端口。

我建议设置一个变量,例如PORTprocess.env.PORT || 3030。目前看来,我相信express正在选择一个随机端口来使用。

在这个答案中还有一些信息:javascript - app.set('port', 8080) versus app.listen(8080) in Express.js

答案 1 :(得分:0)

这可能不是唯一的错误(现在一切都在运行,无论如何),但是app.listen()方法存在问题。第一个参数并不是我给它的回调,而是一条引用它正在听的内容的路径。回调是可选的,但仅作为第二个参数。 Here's the link to the Express docs.

使用app.set('port', process.env.PORT || 3030)将端口设置为process.env.PORT,或者如果它不是真的,则默认设置为端口3030.在生产或测试环境中,process.env.PORT将具有一个值,完全忽略3030。