2014-06-25 12 views
5

असल में मैं एक सर्वर बनाना चाहता हूं और फिर कुछ सामानों को आजमाने के लिए फ़ेज़र के साथ एक साधारण जावास्क्रिप्ट साइट बनाना चाहता हूं, लेकिन HTML सामग्री दिखाती है, लेकिन नहीं जावास्क्रिप्ट।नोडजेएस सर्वर, res.sendfile एचटीएमएल लौटा रहा है लेकिन "जेस्क्रिप्ट शामिल नहीं है" (<script src>)

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

basicall

यहाँ मेरी अलग फ़ाइलों & कोड हैं y game.js दिखाता है कि अगर मैं केवल ब्राउज़र में index.html खोलता हूं, लेकिन अगर मैं 'node server.js' नहीं करता हूं और फिर लोकलहोस्ट पर जाता हूं: 1337, तो यह केवल 'test' (सादे पाठ) दिखाएगा), लेकिन जावास्क्रिप्ट नहीं। मुझे यकीन नहीं था कि मुझे शीर्षक के रूप में क्या रखा जाना चाहिए, क्षमा करें अगर यह भ्रामक है/कोई समझ नहीं आता है।

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 फ़ाइलों में कहें,:

उत्तर

12

आप अपने ढेर के शीर्ष पर एक स्थिर मिडलवेयर की सेवा फ़ाइल को शामिल करने की जरूरत है ब्राउज़र जावास्क्रिप्ट फ़ाइलों तक पहुंचने में सक्षम होना चाहिए।

+0

एप.स्टैटिक को संपादित एक्सप्रेस.स्टैटिक लेकिन मुझे अभी भी यह त्रुटि मिलती है: http://puu.sh/9JrFi/4767373cb3.png (कोई विधि 'स्थिर' नहीं है) और यदि मैं इसे संपादित नहीं करना चाहता था , मैंने express.static की कोशिश की और यह कहता है कि एक्सप्रेस परिभाषित नहीं है। – prk

+0

हाँ, बस कोशिश की लेकिन यह कहता है कि कोई विधि 'स्थैतिक' नहीं है। यहां कोड है: http://puu.sh/9Js1C/2cde44063d.png और यहां त्रुटि है: http://puu.sh/9Js4C/307a0da53a.png – prk

+0

अब कोई त्रुटि नहीं है, लेकिन स्थानीयहोस्ट के लिए असीमित लोडिंग समय: 1337 : पी – prk

0

आप अच्छी तरह से व्यक्त नहीं कर रहे हैं। स्थैतिक मिडलवेयर एक निर्देशिका से सामग्री की सेवा संभालती है। इस मामले में 'सार्वजनिक' निर्देशिका की सेवा की जाती है और कोई भी सामग्री (एचटीएमएल, सीएसएस, जावास्क्रिप्ट) उपलब्ध होगी। (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); 

}); 
1

मैं एक ही मुद्दा यह था, क्योंकि एक्सप्रेस संस्करण की, मैं इसे 4.x संस्करण में नवीनीकृत किया था, और मैं अलग त्रुटि (जो अच्छा था) प्राप्त करने के लिए शुरू किया और फिर मैं इस्तेमाल किया नीचे कमांड:

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

और यह काम किया!

+0

क्या भेजता है यहां क्लिक करें मुझे त्रुटि मिल रही है जैसे 'कोई विधि नहीं है' भेजें फ़ाइल ' –

+0

क्या आप अपना कोड पेस्ट कर सकते हैं? –

+0

आपके उत्तर के लिए धन्यवाद अब यह ठीक काम कर रहा है मैंने अपने संस्करण को अपग्रेड नहीं किया –

संबंधित मुद्दे