node.js - -已修复-无法获取/express 和 Node js

标签 node.js express socket.io openshift

嘿大家我正在和一些 friend 一起开发一个项目,我们希望我们的服务器在 openshift 上运行没有错误,但它总是给出无法获取/ 我试图寻找解决方案并尝试了很多,但它只是没有解决它。

有什么想法吗?

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 --

最佳答案

在您共享的屏幕截图中,文件夹名称是 Public 而不是 public,在 osX 中(我假设这就是您在屏幕截图中使用的名称),Publicpublic 是不同的。

如果你写这个,

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

一切应该开始工作。

另外,如果您想设置默认页面,即当用户访问 / 时并且您希望提供 /index.html ,您可以这样做

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

我希望这能解决您的问题!!

关于node.js - -已修复-无法获取/express 和 Node js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35648598/

相关文章:

javascript - Socket.io 不断重复连接并忽略其他事件

javascript - 使用来自 Node/Express 请求的 JSON Web 服务?

node.js - 将文件编码为 base 64 Nodejs

javascript - ExpressJS 中的 app.use 函数如何重定向以 "/"结尾的 url?

javascript - Express JS 将变量传递给 Javascript 文件

session - 套接字请求的 Sails.js 授权

Laravel Socket.io,Redis 事件正在广播但未在客户端显示

node.js - 如何在 Wildfly 服务器上部署我的 NodeJS 应用程序

javascript - 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js): Error: Cannot find module 'babel-preset-react'

javascript - 如何在 socket.io 2.0.3 中获取客户端 ip 地址?