lifepulse
lifepulse

Reputation: 13

How can I go about serving single page html using node.js on port 80?

My project structure looks like this:

My goal is to be able to run 'node server.js" in the project folder and have it serve on port 80. Going to localhost:80 or w.e would render the index.html along with its css/assets/js.

I've tried with connect, express and http but no luck...new to node.

Thanks!

Upvotes: 1

Views: 1659

Answers (2)

user3998237
user3998237

Reputation:


First of all, change your structure:

  • project
    • assets/images/
    • assets/css/application.css
    • assets/js/application.js
    • assets/font
    • node_modules
    • views/index.html
    • server.js
    • package.json

First require some packages:

var express = require('express'),
    app = express(),
    path = require('path');

Them run in the terminal window:

npm install express

Them set up the configurations:

app.set('views', path.join(__dirname, 'views')); // This is to serve static files like html in the views folder
app.set('view engine', html); // your engine, you can use html, jade, ejs, vash, etc
app.set('port', process.env.PORT || 80); // set up the port to be production or 80.
app.set('env', process.env.NODE_ENV || 'development'); 

app.use(express.static(path.join(__dirname, 'assets'))); // // This is to serve static files like .css and .js, images, fonts in the assets folder

Them create your routes:

app.get('/', function(req, res) {
  res.send('Hello word');
});

app.get('/something', function(req, res) {
  res.send('Hei, this is something!!!');
});

If you want render the index, inside the views folder:

app.get('/index', function(req, res) {
  res.render('index');
});

And finally:

app.listen(app.get('port'), function(req, res) {
 console.log('Server listening at ' + app.get('port')');
});

Them access localhost:80/index

Upvotes: 1

7zark7
7zark7

Reputation: 10145

Put your assets and subdirs under ./public, then from top dir, add app.js:

var express = require('express');
var app = new express();

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

app.listen(80, function () {
  console.log('Server running...');
});

Upvotes: 1

Related Questions