基本上我想制作一个服务器然后用一个简单的javascript网站和phaser来尝试一些东西,但html的东西显示,但不是javascript。
以下是我的不同文件&代码:
的index.html:
<!doctype html>
<html>
<center>
<body>
test
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="phaser.min.js"></script>
<script src="game.js"></script>
<div id='game'></div>
</body>
</center>
</html>
game.js:
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'game', { preload: preload, create: create, update: update });
function preload() {
game.load.image('char', 'char.png');
}
var sprite;
var cursors;
function create() {
game.physics.startSystem(Phaser.Physics.P2JS);
game.physics.p2.defaultRestitution = 0.8;
sprite = game.add.sprite(200, 200, 'char');
game.physics.p2.enable(sprite);
sprite.body.setZeroDamping();
sprite.body.fixedRotation = true;
text = game.add.text(20, 20, 'l2arrowkeys', { fill: '#ffffff' });
cursors = game.input.keyboard.createCursorKeys();
}
function update() {
sprite.body.setZeroVelocity();
if (cursors.left.isDown)
{
sprite.body.moveLeft(200);
}
else if (cursors.right.isDown)
{
sprite.body.moveRight(200);
}
if (cursors.up.isDown)
{
sprite.body.moveUp(200);
}
else if (cursors.down.isDown)
{
sprite.body.moveDown(200);
}
}
server.js:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendfile('index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
socket.on('disconnect', function(){
console.log('a user disconnected');
});
});
http.listen(1337, function(){
console.log('listening on *:1337');
});
基本上,如果我只在浏览器中打开index.html,则会显示game.js,但如果我执行“node server.js”,则不会显示。然后转到localhost:1337,那么它只会显示&#39; test&#39; (纯文本),但不是Javascript。我不确定我应该把它作为标题,对不起如果它有误导性/毫无意义。
答案 0 :(得分:13)
您需要在堆栈顶部包含一个提供中间件的静态文件:
var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.use(express.static(__dirname + '/public'));
app.get('/', function(req, res){
res.sendfile('index.html');
});
// ...
因此,如果您将js文件放在名为&#39; public&#39;的子目录中(相对于脚本所在的位置),浏览器应该能够访问javascript文件。
答案 1 :(得分:1)
我有同样的问题,因为Express版本,我将它升级到4.x版本,我开始得到不同的错误(这很好)然后我用下面的命令:
app.get('/home', function (req, res) {
res.sendFile( __dirname + "/public/" + "index.html" );
})
它有效!
答案 2 :(得分:0)
你没有配置好表达。 静态中间件处理从目录提供内容。在这种情况下,“公共”目录被提供,任何内容(HTML,CSS,JavaScript)都可用。 在您的快速配置上需要(express.static(__ dirname +'/ app'));
app.configure(function () {
app.use(express.logger());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(__dirname + '/app'));
app.set('PORT', 3000);
});
答案 3 :(得分:0)
sendfile返回HTML时遇到了同样的问题,但