首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJS服务器,res.sendfile返回res.sendfile,但不返回"jscript包含“(<script src>)

NodeJS服务器,res.sendfile返回res.sendfile,但不返回"jscript包含“(<script src>)
EN

Stack Overflow用户
提问于 2014-06-25 13:40:47
回答 4查看 11.2K关注 0票数 6

基本上,我想创建一个服务器,然后用phaser创建一个简单的javascript站点来尝试一些内容,但是html的内容显示出来,而不是javascript。

以下是我的不同文件和代码:

index.html:

代码语言:javascript
复制
<!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:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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');
});

基本上,如果我只在浏览器中打开game.js,而不打开‘节点server.js’,然后转到localhost:1337,那么它只会显示'test‘(纯文本),而不是Javascript。我不知道我应该把什么作为标题,抱歉,如果这是误导/没有意义。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-06-25 13:45:19

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

代码语言: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文件。

票数 16
EN

Stack Overflow用户

发布于 2014-06-25 13:51:35

你没能很好的表达。静态中间件处理从目录中提供内容的服务。在这种情况下,“公共”目录将被提供,任何内容(HTML、CSS、JavaScript)都将可用。将需要(express.static(__dirname +‘/app’));在您的快速配置上使用

代码语言:javascript
复制
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);

});
票数 1
EN

Stack Overflow用户

发布于 2015-06-28 16:19:59

由于Express版本,我遇到了相同的问题,我将其升级到4.x版本,并开始得到不同的错误(这很好),然后使用以下命令:

代码语言:javascript
复制
 app.get('/home', function (req, res) {
    res.sendFile( __dirname + "/public/" + "index.html" );
 })

而且起作用了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24410340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档