【问题标题】:-FIXED- cannot get / express and node js-FIXED-无法获取/表达和节点js
【发布时间】:2016-02-26 18:48:35
【问题描述】:

嘿,伙计们,我正在和一些朋友一起做一个项目,我们希望我们的服务器在 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 --

【问题讨论】:

  • 你在尝试什么网址?您没有为 / 设置路由
  • 我正在尝试加载本地服务器上我的公共文件夹中的 index.html 它工作得很好,所以我不知道
  • 如果你的 URL 是 /index.html 会发生什么?
  • Cannot GET /index.html 如果需要,我可以发布服务器的所有代码
  • 如果你加载/static/index.html ?

标签: node.js express socket.io openshift


【解决方案1】:

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

如果你写这个,

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

事情应该开始工作了。

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

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

希望这能解决您的问题!

【讨论】:

  • 谢谢 :) 我在我的 Mac 上从我的 Windows 电脑获得了项目文件,所以这可能就是我没有注意到的原因
  • 恰好是我们中最好的!跨平台工作本身就是一个挑战...... :) 继续努力!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 2018-03-28
  • 2019-03-24
  • 2020-11-22
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
相关资源
最近更新 更多