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

基本上我想制作一个服务器,然后一个简单的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> 

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,则只显示“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文件。

我有同样的问题,因为Express版本,我升级到4.x版本,我开始得到不同的错误(这是好的),然后我使用下面的命令:

  app.get('/home', function (req, res) { res.sendFile( __dirname + "/public/" + "index.html" ); }) 

它的工作!

你没有configuration好expression。 静态中间件句柄处理来自目录的内容。 在这种情况下,将提供“公共”目录,任何内容(HTML,CSS,JavaScript)都将可用。 将需要(express.static(__ dirname +'/ app')); 在你的快速configuration

 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); });