如何在数字海洋上托管nodejS + postgres应用程序?

时间:2019-04-07 08:38:38

标签: node.js digital-ocean

我已按照遍历媒体教程在数字海洋上部署nodejs应用程序。我正在使用数字海洋的postgres数据库。但是在运行node app.js命令时出现错误

我已经尝试过许多关于stackoverflow的答案,但是它们并没有解决问题

app.js

const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')
const morgan = require('morgan')
const db = require('./queries') // contains all query functions
const port = 3000

const app = express()
app.use(morgan('combined'))
app.use(bodyParser.json()) 
app.use(
    bodyParser.urlencoded({
        extended: true,
    })
)
app.use(cors())

app.get('/runs', db.getPlayers)

app.post('/year', db.getByYear)

//Handle production


    app.use(express.static(__dirname+'/public/'))

    //Handle SPA
    app.get(/.*/, (request, response) => response.sendFile(__dirname+'/public/index.html') );


app.listen(port, () => {
    console.log(`App running on port ${port}.`)
})

我得到的错误是:-

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::3000
    at Object._errnoException (util.js:1022:11)
    at _exceptionWithHostPort (util.js:1044:20)
    at Server.setupListenHandle [as _listen2] (net.js:1367:14)
    at listenInCluster (net.js:1408:12)
    at Server.listen (net.js:1492:7)
    at Function.listen (/home/vineet/IPL-Stats-Analysis-Dashboard/node_modules/express/lib/application.js:618:24)
    at Object.<anonymous> (/home/vineet/IPL-Stats-Analysis-Dashboard/app.js:63:5)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)

2 个答案:

答案 0 :(得分:1)

我对上述教程不熟悉-但是错误表明另一个进程(可能是同一个Express应用程序)已经在端口3000上进行监听。

在Linux上,您可以使用命令ps aux列出所有正在运行的进程。寻找另一个node进程。如果不存在,则可以通过运行ipv4地址的lsof -Pnl +M -i4和ipv6地址的lsof -Pnl +M -i6来找到哪些进程正在侦听哪些端口。

或者只是在Digitalocean小滴中进行curl http://localhost:3000

答案 1 :(得分:0)

如果您的操作系统是Linux,则只需在您的终端机上输入killall -9 node