2012-03-09 13 views
32

मैं कोशिश कर रहा हूँ पर "नहीं मिल सकता /" कनेक्ट के साथ connect इस तरह का उपयोग कर कुछ स्थिर वेब पृष्ठों की सेवा शुरू करने के लिए:Node.js

var connect = require("connect"); 
var nowjs = require("now"); 
var io = require("socket.io"); 


var app = connect.createServer(
    connect.static(__dirname + '/public') 
); 

app.listen(8180); 

तो मैं उसी पर /public निर्देशिका में एक सरल index.html जोड़ा app.js फ़ाइल के रूप में निर्देशिका है, लेकिन जब मैं अपने ब्राउज़र पर पेज को देखने का प्रयास मैं नोड से इस प्रतिक्रिया मिल:

/

नहीं मिल सकता

मैं क्या गलत कर रहा हूं और मैं इसे कैसे ठीक कर सकता हूं?

उत्तर

10

इस कोड को काम करना चाहिए:

var connect = require("connect"); 

var app = connect.createServer().use(connect.static(__dirname + '/public')); 

app.listen(8180); 
कनेक्ट 2.0 .createServer() विधि में

इसके अलावा पदावनत। इसके बजाय कनेक्ट() का प्रयोग करें।

var connect = require("connect"); 

var app = connect().use(connect.static(__dirname + '/public')); 

app.listen(8180); 
+7

आह, बहुत बहुत धन्यवाद। इन सभी पुराने node.js लेख मुझे वास्तव में बहिष्कृत चीजों से उलझन में डाल देता है। –

+0

मैंने इन दोनों की कोशिश की है और वे दोनों कहते हैं कि अपरिभाषित एक समारोह नहीं है। पहले उदाहरण में यह मुझे बताता है कि .createServer() एक फ़ंक्शन नहीं है और दूसरे उदाहरण में __dirname अमान्य है। –

-1

आप आमतौर पर इस तरह टेम्पलेट्स को रखना चाहते हैं:

app.get('/', function(req, res){ 
    res.render('index.ejs'); 
}); 

हालांकि आप भी स्थिर सामग्री वितरित कर सकते हैं - तो का उपयोग करने के लिए:

app.use(express.static(__dirname + '/public')); 

अब/सार्वजनिक निर्देशिका में सब कुछ आपकी परियोजना की आपकी साइट की जड़ पर स्थैतिक सामग्री के रूप में वितरित की जाएगी यदि आप सार्वजनिक फ़ोल्डर में default.htm डालते हैं, तो /default.htm

express API और अधिक जानकारी के लिए स्टेटिक मिडलवेयर दस्तावेज़ कनेक्ट करें।

1
var connect = require('connect'); 
var serveStatic = require('serve-static'); 
var app = connect(); 
app.use(serveStatic('../angularjs'), {default: 'angular.min.js'}); app.listen(3000); 
+0

एक कोणीय निर्देशिका बनाएँ। इसके अंदर index.html फ़ाइल बनाओ। – prashantsahni

+0

हालांकि यह कोड ब्लॉक प्रश्न का उत्तर दे सकता है, यह सबसे अच्छा होगा यदि आप ऐसा क्यों करते हैं के लिए थोड़ा सा स्पष्टीकरण प्रदान कर सकते हैं। – PlasmaHH

+0

मैं सर्विसस्टैटिक मॉड्यूल का उपयोग कर रहा हूं, जो नौकरी करता है। – prashantsahni

24

आप यहाँ हो सकता है क्योंकि आप Apress PRO AngularJS किताब पढ़ रहे हैं ...

KnarfaLingus द्वारा this question के लिए एक टिप्पणी में वर्णित के रूप में:

[स्टार्ट उद्धरण]

कनेक्ट मॉड्यूल पुनर्गठित किया गया है। कार्य करें:

npm install connect 

और भी

npm install serve-static 

उसके बाद अपने server.js के रूप में लिखा जा सकता है:

var connect = require('connect'); 
var serveStatic = require('serve-static'); 
var app = connect(); 

app.use(serveStatic('../angularjs')); 

app.listen(5000); 

[अंत उद्धरण]

हालांकि मैं यह कर, के रूप में किताब इस तरह के एक संक्षिप्त तरीके से सुझाव देती है:

var connect = require('connect'); 
var serveStatic = require('serve-static'); 

connect().use(
    serveStatic("../angularjs") 
).listen(5000); 
+4

इसने मेरी समस्या को प्रो कोणीय पुस्तक धन्यवाद के साथ हल किया! – rfresia

+1

इसके लिए भी धन्यवाद, मुझे मेरा हल करने में मदद की। संयोग से मैं ProAngularJS पुस्तक के माध्यम से इसे अपने मैकबुकप्रो पर स्थापित करने की कोशिश कर रहा हूं और मैंने अपनी निर्देशिका को "अप्रेस/एंजुलरजेस" के रूप में संरचित किया है, जहां server.js "Apress" निर्देशिका में रहता है; उस स्थिति में server.js कोड में पथ Servatic ("angularjs") होगा। एक बार मैंने यह किया कि अप्रेस बुक के अध्याय 1 में सरल परीक्षण सफल हुआ और अब मैं सफलतापूर्वक परीक्षण पृष्ठ की सेवा कर रहा हूं। आपकी पोस्ट के लिए फिर से @ सेरज धन्यवाद। –

+1

धन्यवाद और + Apress पुस्तक – zencv

1

तुम भी सेंट, स्थैतिक फ़ाइलें सेवा के लिए एक नोड मॉड्यूल की कोशिश कर सकते हैं। सेटअप छोटा है।

var connect = require('connect'); 
var http = require('http'); 
var st = require('st'); 

var app = connect() 
    .use(st('app/dev')); 

http.createServer(app).listen(8000); 

या (कैश के साथ अक्षम):

var connect = require('connect'); 
var http = require('http'); 
var st = require('st'); 

var app = connect(); 

var mount = st({ 
    path: 'app/dev', 
    cache: false 
}); 

http.createServer(function (req, res) { 
    if (mount(req, res)) return; 
}).listen(8000); 

app.use(mount); 
0

स्टैटिक फ़ाइलें सेवा करने के लिए सबसे आसान तरीका है

npm install connect 

npm install st 

और यहाँ कैसे अपने सर्वर-dev.js फ़ाइल की तरह लग रहा है "वीर" का प्रयोग करें। इसे यहां पर देख जा सकता है। आप नोड के माध्यम से इच्छित स्थान से अपनी फाइलों को पूरा कर सकते हैं:

var harp = require("harp") 
harp.server(projectPath [,args] [,callback]) 

आशा है कि इससे मदद मिलती है।

2

एक ही समस्या थी। ऊपर वर्णित के रूप में इसे हल किया गया था।

<!doctype html> 
<html> 
    <head> 
     <title> 
      My page 
     </title> 
    </head> 
    <body> 
     <script src = "lib/socket.io.js"></script> 
     <script src = "lib/three.js"></script> 
     <script> 
      var socket = io(); 
     </script> 
    </body> 
</html> 

Three.js मेरी index.js

var port = 1338, 
express = require('express'), 
app = express().use(express.static(__dirname + '/')), 
http = require('http').Server(app), 
io = require('socket.io')(http); 

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

io.on('connection', function(socket){ 
    console.log('a user connected'); 
}); 

http.listen(port, function(){ 
    console.log("Node server listening on port " + port); 
}); 

में और मेरे index.html में सिर्फ पथ के परीक्षण के लिए वहाँ में था। यह सभी ऐप की फाइलों को आपके ऐप की मूल निर्देशिका में शुरू करने के लिए सेट करेगा। इसके अलावा socket.io.js को कुछ अंधेरे जादू के माध्यम से स्वचालित रूप से <script src = "/socket.io/socket.io.js"> का उपयोग करके बुलाया जा सकता है (क्योंकि शारीरिक रूप से एक node_modules और lib निर्देशिका में है)।

10

आपको संदेश Cannot GET / संदेश दिखाई देगा यदि आप यह निर्दिष्ट नहीं करते हैं कि आप कौन सा पृष्ठ प्राप्त करना चाहते हैं, तो दूसरे शब्दों में यदि आपका यूआरएल http://localhost:8180 जैसा कुछ है। सुनिश्चित करें कि आप एक पृष्ठ का नाम दर्ज करें, उदा। http://localhost:8180/index.html

+0

हाँ के बारे में संकेत के लिए ... यह मेरे साथ हुआ। –

+0

यदि आपके पास गलत पथ है, तो एक ही व्यवहार करें, उदाहरण के लिए एक स्थैतिक फ़ाइल – Mick

+0

मुझे लगता है कि यह समाधान ज्यादातर Express.js का उपयोग करने वालों के लिए काम करेगा – lasec0203