创建服务器时发送index.html文件

时间:2016-08-01 12:55:22

标签: javascript node.js express

我希望在创建服务器时加载像index.html这样的文件。当我执行server.js使用节点时,我会将响应发送为此res.end("text")之类的文本。但是我希望加载index.html

我尝试使用sendFile()中的app.get('/getFile')加载它,但是当我在地址栏中输入内容时,我为text的所有网址获取了localhost:3000/getFile

这是我的server.js:

    (function(){

var http = require("http");
var express = require('express');
var app =  express();
var bodyParser = require('body-parser');
var path = require('path');

// app.use(express.static(__dirname));
app.use(bodyParser.json());
app.use(express.static(__dirname+'/views'));

var server = http.createServer(function(request, response) {
  response.end("text");

});

server.listen('3000');
console.log("Server is listening");

app.get('/getFile',function(request,response){
    // response.end('shi');
    response.sendFile(path.join('/index.html'));
})
})();

3 个答案:

答案 0 :(得分:1)

在代码中更改以下内容:

var server = http.createServer(function(request, response) {
    response.end("text");
});

到此:

var server = http.createServer(app);

现在,您可以使用以下代码提供静态index.html文件:

app.get('/', function(req, res, next){
    // Serve the index.html file in the root directory of the website.
    res.sendFile(path.join('/index.html'));
});

我希望这会有所帮助。如果您有任何疑问,请与我们联系。

答案 1 :(得分:0)

看起来您的问题与所有静态资产有关。

在像 express 这样的应用程序服务器中,您有3种不同的元素可供使用:

  1. 静态内容:这是 html ,客户​​端 js css ,图片等等

    < / LI>
  2. 服务器端模板或视图,是您使用某种模板库(如把手 jade )组装的文档,用于生成 html

  3. api以 xml 或更常见的 json 格式提供数据

  4. 您的问题是如何提供静态部分。

    您应该将 express 应用的静态文件夹添加到构建 angular 应用的文件夹中。

    不仅 index.html 您需要客户端 .js .css 以及页面所需的所有图片。

    <强>更新

    Here您可以找到有关静态内容的 express 文档。

    <强>更新

    当您向 express 中间件添加静态文件夹时,您应该能够直接访问您的文件。

    例如,如果您有2个文件:$project/static/main.js$project/static/js/my-lib.js,则应使用以下网址:

    http://127.0.0.1:3000/main.js
    http://127.0.0.1:3000/js/my-lib.js
    

    考虑到您正在端口3000上的localhost上执行节点http服务器。

    如果您提供访问静态内容的特定路径,则必须重写您的网址。

    如果您使用如下行:

    app.use('/staticFolder', express.static('staticFolder'));
    

    比上述文件的网址为:

    http://127.0.0.1:3000/staticFolder/main.js
    http://127.0.0.1:3000/staticFolder/js/my-lib.js
    

    还要注意你提供的表达方式。

    您应该给出正确的路径,并且使用绝对路径总是更安全:

    app.use(express.static(__dirname + 'staticFolder'));
    

    app.use('/staticFolder', express.static(__dirname + 'staticFolder'));
    

答案 2 :(得分:0)

<强> EDITED

我刚刚创建了一个文件夹,并编写了以下代码,我已经检查过它是否正常工作。

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

app.use(express.static(__dirname + '/public'));

app.get('/', function(req, res) {
    res.sendFile(__dirname + '/public/indexz.html');
});

app.listen(1339);
console.log('Open this link http://localhost:1337');

<强>步骤

1将上面给出的代码复制到新文件夹中,并将其命名为您想要的名称,将文件命名为server.js

2转到您的cmd并传播到您的代码的位置,现在npm install express

3现在在控制台上输入node server

4打开控制台上的链接。

  

注意:确保文件夹名称为public,并且有一个名为的文件   indexz.html就在那里。

Directory Arrangement

<强>被修改

  

关于正确的客户端文件安排

首先,您必须将所有文件保存在公用文件夹中,并在html文档中相应地附加它们。

示例

<!-- Owl Carousel Assets -->
<link href="css/owl.carousel.css" rel="stylesheet">
<link href="css/owl.theme.css" rel="stylesheet">
<script src="js/jquery.min.js"></script>
<script src="angular.js"></script>
<script src="controller.js"></script>

然后在公共文件夹中,您将拥有名为js和css的文件夹以及公用文件夹的根目录中的html文件。