2014-02-26 37 views
-1

我試圖從index.js頁面啓動HTTP服務器。我一直在閱讀Node Beginner並在那裏閱讀教程,但每次嘗試啓動HTTP服務器時,都會出現錯誤。這是代碼錯誤在node.js中啓動HTTP服務器

Server.js -

var http = require("http"); 
    function start() { 
     function onRequest(request, response) { 
     console.log("Request received."); 
     response.writeHead(200, {"Content-Type": "text/plain"}); 
     response.write("Hello World"); 
     response.end(); 
     } 
     http.createServer(onRequest).listen(10000); 
     console.log("Server has started."); 
    } 

然後,index.js -

var server = require("./server"); 
    server.start(); 

但每次我嘗試運行index.js,我得到這個錯誤 -

server.start(); 
    ^
    TypeError: Object #<Object> has no method 'start' 
     at Object.<anonymous> (C:\wamp\www\nodeStack\index.js:2:8) 
     at Module._compile (module.js:456:26) 
     at Object.Module._extensions..js (module.js:474:10) 
     at Module.load (module.js:356:32) 
     at Function.Module._load (module.js:312:12) 
     at Function.Module.runMain (module.js:497:10) 
     at startup (node.js:119:16) 
     at node.js:901:3 
    Program exited. 

請問我該如何解決此問題,謝謝。

回答

0

您必須將您的server.js更改爲導出函數啓動。 您還可以閱讀很好解釋有關module.exports這裏:What is the purpose of Node.js module.exports and how do you use it?

var http = require("http"); 
var server = module.exports = {}; 

server.start = function() { 
    function onRequest(request, response) { 
     console.log("Request received."); 
     response.writeHead(200, {"Content-Type": "text/plain"}); 
     response.write("Hello World"); 
     response.end(); 
    } 
    http.createServer(onRequest).listen(10000); 
    console.log("Server has started."); 
}; 
+0

我對出口模塊讀取和也跟着你的答案,但現在我得到這個錯誤 - events.js:72扔呃; //未處理「錯誤」事件。錯誤:聽EADDRINUSE。在本教程的這一方面之前,我已經使用了相同的端口並且它工作了 –

+0

EADDRINUSE意味着listen()嘗試綁定服務器的端口號已被使用。只需將端口號10000更改爲3000或3001或任何其他直到錯誤將消失。另外,如果應用程序的另一個副本已在運行,則無法啓動在相同端口上偵聽的兩個節點實例。 –

2
var http = require("http"); 

    server.start = function() { 
    function onRequest(request, response) { 
    console.log("Request received."); 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write("Hello World"); 
    response.end(); 
    } 
    http.createServer(onRequest).listen(10000); 
    console.log("Server has started."); 
    }; 
     exports.start = start; 
1

你可能從監督的示例代碼的最後一行上http://www.nodebeginner.orgserver.js。這最後一行顯示

exports.start = start; 

如果你把它添加到server.js文件的末尾,都應該罰款。

0

我剛碰到這個確切的問題。對我來說,修復是刪除()調用時server.start在index.js

嘗試:

var server = require("./server"); 
server.start;