Shiny stopped working after modularizing the app

Thanks for suggestion.
Please find the solution below.

Although it is no elegant but much appreciated if UI could be improved/suggested

library(shiny)
library(magrittr) # Load magrittr for the piping operator %>%
library(DT)
library(readxl)
library(tidyselect)
library(writexl)
library(dplyr)
library(tidyr)
library(readxl)
library(stringr)

# Increase band width for shiny to handle bigger file 
options(shiny.maxRequestSize=30*1024^2) 

# Function to read all excel sheet necessary
read_excel_allsheets <- function(filename, tibble = FALSE) {
  sheets <- readxl::excel_sheets(filename)
  x <- lapply(sheets, function(X) readxl::read_excel(filename, sheet = X, col_names = T, skip = 5
                                                     ,col_types = "text"
  ))
  if(!tibble) x <- lapply(x, as.data.frame)
  names(x) <- sheets
  x
}

# Module UI to read content
mod_readUI <- function(id) {
  ns <- shiny::NS(id)
  shiny::tagList(
    fileInput(ns("file1"), h6("Choose xlsx file")
              ,accept=c(".xlsx"))
  )
}

# Module UI to display content
mod_displayUI <- function(id) {
  ns <- shiny::NS(id)
  shiny::tagList(
    DT::dataTableOutput(ns("contents"))
  )
}

# Module UI to download content
mod_downloadUI <- function(id) {
  ns <- shiny::NS(id)
  shiny::tagList(
    downloadButton(ns("downloadData"), "Download")
  )
}

# Server functions
mod_display <- function(input, output, session, file) {
  # In case want to alter the data to download
  # myfile = reactive({as.data.frame(file()[,1])})
  output$contents <- DT::renderDataTable({
    DT::datatable(file()
                  ,options = list(pageLength = 7,scrollX = TRUE))
  })

  reactive({
    file()
    # myfile()
  })
}

mod_read <- function(input, output, session){
  
  getData <- reactive({
    req(input$file1)
    inFile <- input$file1
    mysheets <- read_excel_allsheets(inFile$datapath)
    ppm <- mysheets$Download
    ppm
  })
  
  ### In ordert to send data as reactive 
  reactive({
    getData()
  })
}

mod_download <- function(input, output, session, displayData){
  
  output$downloadData <- downloadHandler(
    # browser(),
    filename = function() {
      paste("Updated file dated-", Sys.Date(), ".xlsx")
    },
    
    content = function(file) {
      write_xlsx(displayData(),file)
    }
  )
  
}

ui <- fluidPage(
  
  shinydashboard::dashboardPage(
    skin = "yellow",
    # HEADER -----
    shinydashboard::dashboardHeader(
      title = "Modularizing App"
    ),
    # SIDEBAR -----
    shinydashboard::dashboardSidebar(
      shinydashboard::sidebarMenu(id = "menu",
        shinydashboard::menuItem('Example', tabName = 'example', icon = shiny::icon('file')),
        
        conditionalPanel("input.menu == 'example'",
                         shinydashboard::menuSubItem(mod_readUI("sidemod")),
                         shinydashboard::menuSubItem(mod_downloadUI("downmod"))
        )
      ) 
    ),
    # BODY -----
    shinydashboard::dashboardBody(
      shinydashboard::tabItems(
        shinydashboard::tabItem("example", mod_displayUI("bodymod"))
      )
    )
  )
)

server <- function(input, output) {
  readFile <- shiny::callModule(mod_read, "sidemod")
  displayFile <- shiny::callModule(mod_display, "bodymod", file = readFile)
  shiny::callModule(mod_download, "downmod", displayFile)
  
}

shinyApp(ui,server)