Nino Osewoudt
Nino Osewoudt

Reputation: 53

-FIXED- cannot get / express and node js

hey guys im working on a project with some friends and we want our server on openshift it runs without errors but it always gives cannot get / i tried to look for solutions and tried many but it just doesent fix it.

any ideas ?

var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io').listen(server);


//


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

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



server.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP);

io.on('connection', onSocketConnection);

var players = [];

var npc1 = new Player(1049, 980);
npc1.id = "Johan Kruijs";
npc1.color = "gold";
npc1.name = "[NPC] Johan Kruijs";

players.push(npc1);

function onSocketConnection(client) {
    console.log("Player has connected: ");
    client.on("disconnect", onClientDisconnect);
    client.on("new player", onNewPlayer);
    client.on("move player", onMovePlayer);
};

function onClientDisconnect() {
    var removePlayer = playerById(this.id);

    if (!removePlayer) {
        console.log("Player not found: " + this.id);
        return;
    }

    console.log(removePlayer.name + " has disconnected.");

    players.splice(players.indexOf(removePlayer), 1);
    this.broadcast.emit("remove player", {
        id: this.id
    });
};

function onNewPlayer(data) {
    var newPlayer = new Player(data.x, data.y);
    newPlayer.id = this.id;
    newPlayer.name = data.name;
    newPlayer.color = data.color;

    this.broadcast.emit("new player", {
        id: newPlayer.id,
        x: newPlayer.x,
        y: newPlayer.y,
        name: newPlayer.name,
        color: newPlayer.color
    });

    var i, existingPlayer;
    for (i = 0; i < players.length; i++) {
        existingPlayer = players[i];
        this.emit("new player", {
            id: existingPlayer.id,
            x: existingPlayer.x,
            y: existingPlayer.y,
            name: existingPlayer.name,
            color: existingPlayer.color
        });
    };

    players.push(newPlayer);
    console.log(" - name: [" + newPlayer.name + "]")
    console.log(" - id:   [" + newPlayer.id + "]");
};

function onMovePlayer(data) {
    var player = playerById(data.id);
    player.x = data.x;
    player.y = data.y;
    player.id = data.id;

    io.emit("move player", {
        id: data.id,
        x: data.x,
        y: data.y
    })
};

function playerById(id) {
    var i;
    for (i = 0; i < players.length; i++) {
        if (players[i].id == id)
            return players[i];
    };

    return false;
};

function Player(xpos, ypos) {
    var result = {
        x: xpos,
        y: ypos,
        id: 0
    }
    return result;
}

path --

Upvotes: 1

Views: 516

Answers (1)

Dave Amit
Dave Amit

Reputation: 2309

In the screenshot you shared, the folder name is Public and not public, in osX (I assume that is what you are using from the screenshot), Public and public are different.

If you write this,

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

Things should start working.

Plus if you wanna set a default page, i.e. when user visits / and you want your /index.html to be served, you can do it like

app.use('/', express.static(__dirname + '/Public', {index: "index.html"}));

I hope this resolves your issue!!

Upvotes: 2

Related Questions