2016-02-26 49 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。我建议你看看其中的一个,它可以帮助你构建你的应用程序网页。

相关问题