จะโฮสต์แอปพลิเคชัน nodejS + postgres บน digital-ocean ได้อย่างไร

ฉันได้ติดตามบทช่วยสอนเกี่ยวกับสื่อการสำรวจเพื่อปรับใช้แอป nodejs บนมหาสมุทรดิจิทัล ฉันใช้ฐานข้อมูล postgres ของมหาสมุทรดิจิทัล อย่างไรก็ตาม ในการรันคำสั่ง node app.js ฉันได้รับข้อผิดพลาด

ฉันได้ลองติดตามคำตอบมากมายเกี่ยวกับ stackoverflow แล้ว แต่ยังไม่ได้แก้ปัญหา

แอพ.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)

person Vineet    schedule 07.04.2019    source แหล่งที่มา
comment
ฉันคิดว่า madflow น่าจะถูกต้อง แต่คำถามของฉันกับคุณ Vineet คุณได้ทดสอบแอปนี้เลยหรือไม่? ทดสอบแอปของคุณไปตลอดทางโดยเฉพาะอย่างยิ่งกับบทช่วยสอนที่เร่งรัดให้คุณสร้างแอปโดยไม่ต้องอธิบายอย่างละเอียดว่าคุณกำลังทำอะไรอยู่และทำไม   -  person Daniel    schedule 17.05.2019


คำตอบ (2)


ฉันไม่คุ้นเคยกับบทช่วยสอนดังกล่าว - แต่ข้อผิดพลาดระบุว่ากระบวนการอื่น (อาจเป็นแอปด่วนเดียวกัน) กำลังฟังบนพอร์ต 3000 อยู่แล้ว

บน Linux คุณสามารถแสดงรายการกระบวนการที่ทำงานอยู่ทั้งหมดด้วยคำสั่ง ps aux มองหากระบวนการ node อื่น หากไม่มี คุณสามารถค้นหากระบวนการที่กำลังฟังพอร์ตใดได้โดยการรัน lsof -Pnl +M -i4 สำหรับที่อยู่ ipv4 และ lsof -Pnl +M -i6 สำหรับ ipv6

หรือเพียงแค่ทำ curl http://localhost:3000 ในหยด Digitalocean

person madflow    schedule 07.04.2019

หากระบบปฏิบัติการของคุณคือ Linux เพียงพิมพ์บนเทอร์มินัลของคุณซึ่งก็คือ killall -9 node

person PJK    schedule 07.07.2019