javascript - NodeJS 服务器,res.sendfile 返回 HTML 但不是 "jscript includes"(<script src>)

标签 javascript html node.js

基本上我想制作一个服务器,然后是一个简单的带有相位器的 javascript 站点来尝试一些东西,但是显示 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>

游戏.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);
    }

}

服务器.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,那么它只会显示“test” (纯文本),但不是 Javascript。我不确定我应该把什么作为标题,如果它有误导性/没有意义,我深表歉意。

最佳答案

您需要在堆栈顶部包含一个静态文件服务中间件:

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 文件放在名为“public”的子目录中(相对于脚本所在的位置),浏览器应该能够访问 javascript 文件。

关于javascript - NodeJS 服务器,res.sendfile 返回 HTML 但不是 "jscript includes"(&lt;script src>),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24410340/

相关文章:

javascript - 在 "constructor"中设置 "prototype"属性的优点

javascript - $filter ('date' ) 返回 "invalid date"

javascript - 检查 HTML 客户端是否收到服务器响应的最佳实践

javascript - HTML JS 错误记录输入

html - 图片链接,比实际图片宽

javascript - 如何使用数据库回调函数重定向用户 - HAPI

javascript - index.js.erb 未加载到 Rails 中

javascript - 从 Node.js 中的 .rar 文件读取所有文件名

node.js - Passport Strategy 如何在幕后运作

javascript - 如何返回 not found in filter function in jQuery?