A guide to serving a directory named 'public' using Express

I am struggling to serve the login page from my public folder using Express. Despite my efforts to adjust the path, I have not been successful. I want to be able to include more code in the callback function, but the current setup does not allow for it. Even when I try to convert the callback into a full function, it still doesn't work.

My directory structure
- root
  - server
    - server.js
  - public
    - login
      - index.html

const express = require('express');
const app = express();
const path = require('path');

app.listen(4000);
console.log('Server started\n');

// Serve login page
app.get('/', () => app.use(express.static(__dirname + '/public/login')));

// What I'm aiming for
app.get('/', () => {
  // Serve file 
});

Answer №1

It is important to mount the static file serving directly when the server starts, rather than waiting for the first request to arrive. In order to achieve this, you need to make the following adjustment:

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

Since the code is initiated in the /server/ directory, you need to go up one folder using /../.

If you only want to serve the index.html file from the public folder instead of all files within it, you can do so with the following modification:

app.get('/', (req, res) => res.sendFile('index.html', { root: __dirname + '/../public/login'));

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Creating two interactive animations utilizing a combination of CSS and Javascript, triggered by the click event on

Looking to incorporate two unique CSS animations into my project. Utilizing two buttons and one object, I want the first animation to trigger upon clicking the first button. I understand how to handle one button and one animation, but am unsure how to man ...

Challenges with window opening function while already in fullscreen view

Unsure of what might be causing the issue, but here's the problem... My code to open a new window is as follows: var opts = 'location=0,toolbar=0,menubar=0,scrollbars=0,resizable=0,height=450,width=300,right=350'; window.open('/' ...

Solving the Angular 7 HttpHeaders Cross-Origin Resource Sharing Problem

I'm currently working on integrating UPS's package rating API into my project. I've managed to make it work in Postman, but I'm facing issues when trying to run it on a web browser due to Cross-Origin Resource Sharing (CORS) restriction ...

Retrieving JSON data value without a key using AngularJS

I am struggling to retrieve a data value from a JSON array in Angular that does not have a key value. While I have come across examples of extracting values with keys, I haven't been able to crack this particular piece. The JSON returned from the API ...

Unable to reset input fields in Javascript problem persists

Check out my JSFiddle demo: http://jsfiddle.net/kboucheron/XVq3n/15/ When I try to clear a list of items by clicking on the "Clear" button, I want the text input field to be cleared as well. However, I am unable to achieve this functionality. <input t ...

How to use hooks in NETXJS to pass data from a page to a component

Hey there, how are you doing? I am currently working on a project using Next.js and styled components. I am trying to change a string using props in my layout component, where the main content is dynamic per page. Page 'prueba.js' import React f ...

Tips for ensuring that the headers remain fixed in both the horizontal and vertical directions while allowing the data

I have been trying to create a table with a fixed header (meaning the header must be visible both vertically and horizontally). The table should be scrollable It should have a horizontal header The vertical header should match the horizontal header When ...

Utilizing CDN script with Shopify: A guide to optimization

I am currently utilizing VueJs in the development of a Shopify theme using Shopify Cli and Store 2.0. To incorporate Vue, I initially attempted to install it through a CDN script within my theme.liquid file. <script src="{{ 'vue.global.js&apos ...

Having trouble pinpointing the issue with my JavaScript code

Recently, I've been experimenting with JavaScript code snippets and after making some edits to one particular sample, I can't seem to figure out why it's not working. Everything appears correct to me, but here is the code snippet (JSFiddle) ...

Transmit information between controllers during pageload in AngularJS without utilizing $rootscope

I currently have 2 controllers set up as follows: app.controller('ParentMenuController', function ($scope,MenuService) { $scope.contentLoaded = false; $scope.showButton = false; $scope.showButton = MenuService ...

Can you save data entered by a user into a text file using JavaScript or a similar technology in HTML, without the need to send it to a server?

Is there a way to create a site where user data is inputted into an input box or form, and then that information is stored in a .txt file on the user's C drive without uploading it to a server first? I've been experimenting with various forms an ...

Identify and sort JSON objects based on keys with multiple values

My JSON file contains objects structured like this: [ { "name" : "something", "brand": "x", "category" : "cars" }, { "name" : "something2 ...

Issues with displaying calendar items on the React timeline are only resolved after pressing F12 or resizing the

I am encountering a problem while trying to plot the items array in the timeline calendar. Interestingly, the groups array is working fine. The items array also functions properly when values are provided manually. However, the items only render after pre ...

vue-router: Maintaining routing consistency despite argument changes

I am currently working on verifying the unsaved form route before leaving, and in case the user declines, I want to prevent changing the route. Most of it is functioning properly with beforeRouteLeave: function (to, from, next) { ...

Tips on navigating the scroller vertically as the user interacts with a selected div by scrolling up and down

On my webpage, I have various div elements displayed. Each div has the options to move it up or down using the buttons labeled "UP" and "Down". When a user selects a div, they can then use these buttons to adjust its position. I am looking for a way to au ...

Rails: Ensure that JSON form fields remain populated in case the form encounters a validation error

I am using a rails simple form to create a product with three fields inside in order to associate it with appropriate categories: <div class="form-group"> <%= f.input :child_category_id, :collection => @categories.order(:name), :l ...

step-by-step guide on implementing autocomplete using google.maps.places.autocomplete in ExtJS

Just to clarify... I initially wrote a code that was error-free before editing this post. However, after reading a comment on creating a Minimal, Complete, and Verifiable example, I became confused. My minimal script did not work properly, I couldn't ...

The issue arising where the callback function fails to execute after making an AJAX POST request

Within my function, I have an AJAX call that I want to make reusable. When the AJAX call is successful, I need to callback a function. var ajaxPostCall = function(data , url ,callback){ // Return the $.ajax promise $.ajax({ data: data, dataType: ...

Set a hidden field to contain an IEnumerable of integers

Currently, I am working on a project that involves dealing with a viewmodel. [Required(ErrorMessage = "Please enter a title")] [Display(Name="Title")] public string Title { get; set; } [Required(ErrorMessage = "Description is required")] ...

Nested UI routing with hidden display

I am working on a website using AngularJS and Ui-router. Index.html <body> <a href="#">Home Page</a> <div ui-view></div> </body> Javascript: .config(function($stateProvider, $urlRouterProvider) { $statePro ...