0

I am completely new to this community but would really appreciate if someone can help me with this problem I am facing. I am currently following the basic tutorial of the simple Hello World app but how can we update the code to say something else and that to be updated in our output on the browser in real time?


package main

import (
    "log"

    "github.com/gofiber/fiber/v2"
)

func main() {
    // Fiber instance
    app := fiber.New()

    // Routes
    app.Get("/", hello)

    // Start server
    log.Fatal(app.Listen(":3000"))
}

// Handler
func hello(c *fiber.Ctx) error {
    return c.SendString("Hello, World !")
}

Usama Ahmed
  • 21
  • 1
  • 4

3 Answers3

3

Air is a command-line utility that provides live reloading for Go applications.

Install Air by running the following command.

go get -u github.com/cosmtrek/air

Next, create the Air configuration file .air.conf in the project’s root directory with the following configuration.

# .air.conf
# Config file for [Air](https://github.com/cosmtrek/air) in TOML format

# Working directory
# . or absolute path, please note that the directories following must be under root.
root = "." 
tmp_dir = "tmp"

[build]
# Just plain old shell command. You could use `make` as well.
cmd = "go build -o ./tmp/main ."
# Binary file yields from `cmd`.
bin = "tmp/main"
# Customize binary.
full_bin = "APP_ENV=dev APP_USER=air ./tmp/main"
# Watch these filename extensions.
include_ext = ["go", "tpl", "tmpl", "html"]
# Ignore these filename extensions or directories.
exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules"]
# Watch these directories if you specified.
include_dir = []
# Exclude files.
exclude_file = []
# It's not necessary to trigger build each time file changes if it's too frequent.
delay = 1000 # ms
# Stop to run old binary when build errors occur.
stop_on_error = true
# This log file places in your tmp_dir.
log = "air_errors.log"

[log]
# Show log time
time = false

[color]
# Customize each part's color. If no color found, use the raw app log.
main = "magenta"
watcher = "cyan"
build = "yellow"
runner = "green"

[misc]
# Delete tmp directory on exit
clean_on_exit = true

The configurations are self-explanatory, adjust them to suit your needs.

Finally, instead of running our Go application with the usual go run command, use the air command.

Mahdi Toosi
  • 375
  • 1
  • 4
  • 13
0

You're talking about hot-reloading (live-reloading). Go itself do not have it implemented by default to achieve that, but you can do it with the package called air https://github.com/cosmtrek/air. Here is a great tutorial how to use it with Fiber: https://dev.to/komfysach/go-live-reload-using-air-40ll

Rhymond
  • 110
  • 1
  • 2
  • 5
0

you can use nodemon

install nodemon 'nodejs required'

npm install -g nodemon

and use the command to enable hot-reolading

nodemon --watch './**/*.go' --signal SIGTERM --exec 'go' run main.go