2016-02-26 46 views
0

我可能會問一個很大的noob問題,這是我在這裏問過的最糟糕的問題之一,但我迷失在Node/Express中。我只使用Apache服務器(典型的WAMP/XAMP用於測試目的),所以我完全不知道我必須做什麼來爲我的Web應用程序提供服務。如何使用Node/Express爲我的Web應用程序提供服務?

我的文件夾樹如下:

  • WWW
    • nodeserver.js
    • (更多的東西)
    • Liteconomy(我的web應用程序)
      • JS
      • css
      • 插件
      • 模板
      • 的index.html
      • sublime_project

非常典型的,是吧?那麼,我一直在尋找如何通過localhost:8080/Liteconomy或localhost:8080/Liteconomy.html這樣的簡單訪問來提供此應用程序。之後,我的角度路由會完成剩下的工作,但我無法爲應用提供服務。

我有了這個寫在nodeserver.js:

var express = require('express'); 
var app = express(); 

app.get('/', function (req, res) { 
    res.send('Hello World!'); 
}); 

app.listen(8080, function() { 
    console.log('Example app listening on port 8080!'); 
}); 

app.get('/Liteconomy', function (req, res) { 
    res.send('Liteconomy/index.html'); 
}); 

當我執行它,並獲得本地主機:8080,我得到的 「Hello world」,但是當我去到localhost:8080/Liteconomy,我得到以下明文:「Liteconomy/index.html」。如果我嘗試直接訪問索引資源,則會收到「Can not GET /Liteconomy/index.html」錯誤。

我也試過使用靜態thingy,但也沒有工作。

我在這裏做錯了什麼?我想我只是錯過了一些非常重要的東西。

+0

「我得到下面的純文本:」Liteconomy/index.html「 - 是的,你發送純文本到'send()'方法,這就是你得到的結果 – Quentin

+1

」我也嘗試過使用靜態「 - 如果你想提供靜態文件,那麼」靜態東西「就是你應該使用的東西,如果你沒有向我們展示你的東西,我們不能說出爲什麼它不起作用嘗試使用它 – Quentin

+0

要記住的重要一點是,Node不是一個Web服務器,它是一種運行一些JavaScript的方法,你試圖用JS編寫一個web服務器 – Quentin

回答

1

執行以下操作,它將解決您的問題。

var express = require('express'); 
var path = require('path'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var app = express(); 


app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 

// uncomment following if you want to access your app from /liteconomy 
//app.use('/liteconomy', express.static(__dirname + '/Liteconomy', {index: "index.html"})); 

//This will enable you to access it form '/' 
app.use('/', express.static(__dirname + '/Liteconomy', {index: "index.html"})); 

// Rest of the stuff 

然後,如果你將訪問您設置和端口您的網址,你就可以訪問。使用express.static是推薦的靜態內容提供方式。

希望它有幫助!

+0

它有3個未解決的依賴關係。我安裝了bodyParser和cookieParser,但現在它告訴它無法找到「記錄器」模塊。 – Zerok

+0

@Zerok它只是一個錯字,當我從現有的代碼中複製它並忘記刪除記錄器時,順便說一下,我的應用使用了''morgan'',我認爲它不值得投票選擇,並且body parser和cookie解析器是使用節點時的標準良好實踐,以後如果您打算使用使用路由器的查詢和海關路由,這些將派上用場。無論如何,感謝您的意見,我很感激! :)保持良好的工作我的朋友。 –

+0

謝謝!現在它完美地工作:)得使用它作爲我的服務器的基礎,並嘗試從中學習和添加更改。 – Zerok

-1

你得到一個純文本的答案,因爲你實際上問做它的:

app.get('/Liteconomy', function (req, res) { 
    res.send('Liteconomy/index.html'); 
}); 

如果您想發送一個簡單的HTML文件,像你的index.html文件,你應該使用「的sendfile」功能:

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

「__dirname」表示您的根目錄路徑,然後您只需將您的文件路徑。

希望有幫助!

PS:默認情況下,快遞與玉和ejs模板支持,而不是使用HTML。我建議你看看其中的一個,它可以幫助你構建你的應用程序網頁。

相關問題