2015-04-03 103 views
1

我在使用Express時遇到了新手問題。我使用的是Ubuntu 14.04,並創建了一個新的目錄,並在終端中運行「express」,並設置了一個項目模板。然後運行「npm install」安裝依賴關係。然後編輯'views/layout.jade'來改變「!!!」以「doctype html」作爲節點錯誤建議嘗試運行服務器時不作更改。只能從機器運行服務器訪問Express Node.js服務器

然後,我通過在終端上輸入「node app.js」啓動服務器,然後可以使用「localhost:3000」或「192.168.1.13:3000」在瀏覽器中查看默認頁面。

我的理解是我應該可以使用本地網絡中另一臺計算機的「192.168.1.13:3000」。然而,當我嘗試這個時,我得到「連接到192.168.1.13 ...」大約30秒到一分鐘,然後它說:「連接超時...服務器在192.168.1.13需要太長的時間來響應。」

我試過這個從Firefox和鉻在Windows桌面和Android手機。我也試着將它設置爲80而不是3000,結果相同。我已經嘗試在app.listen中的端口之後添加「'0.0.0.0'」,但這也具有相同的結果。

我從來沒有在這個Ubuntu安裝中設置防火牆或端口轉發,所以我相信這些不應該成爲問題? (是我的路由器的問題?)也許我錯了。

這裏的相關文件 -

app.js:

/** 
* Module dependencies. 
*/ 

var express = require('express') 
    , routes = require('./routes'); 

var app = module.exports = express.createServer(); 

// Configuration 

app.configure(function(){ 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
}); 

app.configure('development', function(){ 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

app.configure('production', function(){ 
    app.use(express.errorHandler()); 
}); 

// Routes 

app.get('/', routes.index); 

app.listen(3000, function(){ 
    console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 
}); 

路線/ index.js:

/* 
* GET home page. 
*/ 

exports.index = function(req, res){ 
    res.render('index', { title: 'Express' }) 
}; 

的意見/ layout.jade:

doctype html 
html 
    head 
    title= title 
    link(rel='stylesheet', href='/stylesheets/style.css') 
    body!= body 

views/index.jade:

h1= title 
p Welcome to #{title} 

讓我知道我是否遺漏了任何東西。乾杯。

+0

您可以訪問其他的人(你用它來測試)電腦??? – 2015-04-03 04:52:47

+0

您的ubuntu安裝在虛擬機中嗎? – makenova 2015-04-03 05:04:07

+0

@林琳昂 - 似乎沒有,在windows網絡瀏覽器中看不到它。另外在Windows上運行python -m SimpleHTTPServer似乎無法從Windows計算機訪問。這是你的意思嗎? – qk4 2015-04-03 05:07:21

回答

4

我解決了這個打開傳入端口3000使用iptables通過slebetman的建議,用下面的命令:

iptables -I INPUT 1 -p tcp --dport 3000 -j ACCEPT