2012-05-06 31 views
10

मैं node.js में एक बुनियादी अतिरिक्त प्रोग्राम को कार्यान्वित करने की कोशिश कर रहा हूं जो यूआरएल (जीईटी अनुरोध) के माध्यम से 2 नंबर स्वीकार करता है, उन्हें एक साथ जोड़ता है, और परिणाम देता है।node.js त्रुटि - नया टाइप एरर फेंक दें ('पहला तर्क एक स्ट्रिंग या बफर होना चाहिए');

 

    var http = require("http"); 
    var url1 = require("url"); 

    http.createServer(function(request, response) { 
     response.writeHead(200, {"Content-Type": "text/plain"}); 
     var path = url1.parse(request.url).pathname; 

     if(path == "/addition") 
     { 
     console.log("Request for add recieved\n"); 

     var urlObj = url1.parse(request.url, true); 

     var number1 = urlObj.query["var"]; 
     var number2 = urlObj.query["var2"]; 
     var num3 = parseInt(number2); 
     var num4 = parseInt(number1); 

     var tot = num3 + num4; 

     response.write(tot); 
     response.write(number1 + number2); 

     } 
     else 
     { 
     response.write("Invalid Request\n");    
     } 
     response.end(); 

    }).listen(8889); 

     console.log("Server started."); 

जब मैं चलाने के लिए, मैं हो रही है संदेश कंसोल में 'सर्वर शुरू कर दिया'। लेकिन मैं यूआरएल

`http://localhost:8889/addition?var=1&var2=20`

मैं निम्न त्रुटि हो रही है का अनुरोध करते हैं:

http.js: 593 फेंक नए लेखन त्रुटि ('पहला तर्क एक स्ट्रिंग या बफर होना चाहिए');

जब मैं उस पंक्ति को टिप्पणी करता हूं जो परिवर्तनीय 'tot' प्रदर्शित करता है, तो कोड चल रहा है, और मुझे जो आउटपुट मिलता है वह 2 पैरामीटर प्राप्त करने के समेकित मान है। इस मामले में, यह 1 + 20 = 120 होता है। मैं डेटा को संख्यात्मक प्रारूप में रूपांतरित करने में सक्षम नहीं हूं।

कोड में गलती कहां है? और त्रुटि संदेश का मूल रूप से क्या अर्थ है?

अग्रिम में बहुत धन्यवाद।

+0

ध्यान दें कि त्रुटि संदेश भी पाठ (कोड server.js रूप में सहेजा जाता कल्पना करते हुए) को शामिल किया है चाहिए। (server.js: 21: 18) जो बताता है कि समस्या 21 पर है। इससे समस्या को जल्दी से ढूंढने में मदद मिलती है। – jjrv

उत्तर

11

आप प्रतिक्रियाओं के लिए संख्या उत्तीर्ण कर रहे हैं। लिखना, जब वे तार होना चाहिए। इस तरह:

response.write(total + ''); 

चर कुल क्योंकि आप संक्षेप से पहले parseInt() के माध्यम से क्वेरी पैरामीटर पारित कर दिया संख्या 21 में शामिल है। प्रतिक्रिया के माध्यम से भेजे जाने पर त्रुटि उत्पन्न होगी जब तक कि आप इसे स्ट्रिंग में पहले कनवर्ट नहीं करते हैं, खाली स्ट्रिंग को जोड़कर। संख्या 1 + संख्या 2 ठीक है क्योंकि वे तार हैं, लेकिन उनका "योग" "120" है।

मैं सुझाव देता हूं कि node.js पैकेज "एक्सप्रेस" में भी देखें। यह एक HTTP सर्वर के लिए मूल बातें की एक बहुत कुछ है ताकि आप की तरह लिख सकते हैं संभालती है: सर्वर पर:

var express=require('express'); 

var app=express.createServer(); 

app.get('/add',function(req,res) { 
    var num1 = parseInt(req.query.var); 
    var num2 = parseInt(req.query.var2); 

    var total = num1 + num2; 

    res.send(total + ''); 
}); 

app.listen(8888); 
+0

काम किया! और 'एक्सप्रेस' के बारे में कभी नहीं पता था। धन्यवाद! :) – Krish

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

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