Welcome to the Linux Foundation Forum!

Lab-7.1: Failed to fetch url

this is my solution for lab-7.1
and i start the application using this script
"dev": "BOAT_SERVICE_PORT=3333 BRAND_SERVICE_PORT=3334 fastify start -w -l info -P app.js"

'use strict'

const {
    BOAT_SERVICE_PORT,
    BRAND_SERVICE_PORT
} = process.env
const schema = {
    params: {
        type: 'object',
        additionalProperties: false,
        properties: {
            id: { type: 'integer' }
        }
    }
}
const boatUrl = `http://localhost:${BOAT_SERVICE_PORT}`;
const brandUrl = `http://localhost:${BRAND_SERVICE_PORT}`;
module.exports = async function (fastify, opts) {
  fastify.get('/:id', {schema: schema}, async function (request, reply) {
    const {id} = request.params;
    const boatResponse = await fetch(boatUrl + '/' + id);
    if (boatResponse.status === 404) {
        console.log('not found')
        throw fastify.httpErrors.notFound()
    }
    const boatResult = await boatResponse.json();
    const brandResponse = await fetch(brandUrl + '/' + boatResult.brand);
    if (brandResponse.status === 404) {
        throw fastify.httpErrors.notFound();
    }
    const brandResult = await brandResponse.json();

    return {
        id: id,
        color: boatResult.color,
        brand: brandResult.name
    }
  })
}

but i got this error

ERROR (1934): fetch failed
    reqId: "req-1"
    req: {
      "method": "GET",
      "url": "/1",
      "hostname": "localhost:3000",
      "remoteAddress": "::1",
      "remotePort": 52469
    }
    res: {
      "statusCode": 500
    }
    err: {
      "type": "TypeError",
      "message": "fetch failed: connect ECONNREFUSED ::1:3333",
      "stack":
          TypeError: fetch failed
              at Object.fetch (node:internal/deps/undici/undici:11576:11)
              at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
              at async Object.<anonymous> (/Users/ibrahim/node-training/lab-7.1/routes/root.js:21:26)
          caused by: Error: connect ECONNREFUSED ::1:3333
              at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1495:16)

any thoughts ?

Comments

  • faddah
    faddah Posts: 7
    edited January 29

    Your Error status code response is 500, which for HTTP status codes is an Internal Server Error. Are you certain that local server is up & running and that it is set up to receive this routed GET request? Also, you got this fetch from whichever localhost you have set up on Port 3000 — is that the BOAT_SERVICE_PORT localshost server or the BRAND_SERVICE_PORT localhost server? I'd look at whichever one of those is on localhost:3000 and start there.

  • xdxmxc
    xdxmxc Posts: 157

    if you have connection refused it means you're not running the necessary services on those ports

Categories

Upcoming Training