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

Javascript 创建服务器时发送index.html文件,javascript,node.js,express,Javascript,Node.js,Express,我希望在创建服务器时加载像index.html这样的文件。当我使用node执行server.js时,我会以文本形式发送响应,如res.end(“text”)。但是我想加载index.html 我试图在app.get('/getFile')中使用sendFile()加载它,但是当我在地址栏中键入时,我得到了所有URL的文本。。即使是localhost:3000/getFile 这是我的server.js: (function(){ var http = require("http");

我希望在创建服务器时加载像
index.html
这样的文件。当我使用node执行
server.js
时,我会以文本形式发送响应,如
res.end(“text”)
。但是我想加载
index.html

我试图在
app.get('/getFile')
中使用
sendFile()
加载它,但是当我在地址栏中键入时,我得到了所有URL的
文本。。即使是
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'));
})
})();

在代码中更改以下内容:

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

var server = http.createServer(app);
现在,您可以使用以下代码提供static 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'));
});

我希望这有帮助。如果您有任何问题,请告诉我。

看来您的问题在于所有静态资产

在像express这样的应用服务器中,您有3种不同类型的元素需要服务:

  • 静态内容:这是所有html、客户端js、css、图像等

  • 服务器端模板或视图是使用某种模板库(如Handlebar或jade)组装的文档,用于生成html

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

  • 您的问题是如何为静态部件提供服务

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

    不仅仅是index.html,还需要客户端.js、.css和页面所需的所有图像

    更新:

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

    更新:

    将静态文件夹添加到express中间件时,应该能够直接访问文件

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

    http://127.0.0.1:3000/main.js
    http://127.0.0.1:3000/js/my-lib.js
    
    考虑到您正在端口3000上的本地主机上执行节点http服务器

    如果您提供了一个特定的路径来访问静态内容,那么您必须重写您的url

    如果您使用以下行:

    app.use('/staticFolder', express.static('staticFolder'));
    
    上述文件的URL将为:

    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'));
    


    已编辑

    我刚刚创建了一个文件夹,并编写了以下代码,我已经检查了这是否有效

    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现在在控制台上键入
    节点服务器

    4打开控制台上的链接

    注意:确保文件夹名为public,并且有一个名为 里面有indexz.html

    已编辑

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

    您必须将所有文件保存在公用文件夹中,首先将它们相应地附加到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文件

    如果使用的是
    express
    ,则应将静态文件放在静态文件夹中。因此,您不需要预加载任何html文件,也不需要编写代码以发送回客户端。这可能很简单,但在您的代码示例中,
    /getFile
    处理程序先发送回.html,而不是像您在问题中所写的index.html。@MarioAlexandroSantini。你能解释一下如何将文件发送给客户吗。我试图使用
    sendFile()
    发送,但它显示的是相同的
    文本。我了解到,每次向服务器发送请求时,都会执行
    createServer()
    中的内容。也许这就是为什么它不显示html文件的原因。这似乎不是真的,但我只是想确定一下。是的,我实际上发送的是
    first.html
    。我说了
    index.html
    ,这样其他人就可以理解我想先显示出来对不起,我很困惑,你想发回index.html文件,这就是你调用url“/getFile”时代码中的内容。但是,当您使用express时,您应该将html文件放在静态文件夹中,并将其传递给express应用程序,如中所述。看起来您只需要提供一个静态文件,而不是根据请求动态构建的文件。@MarioAlexandroSantini。谢谢我明白你的意思。我不知道你可以发送
    应用程序作为参数如果它对你有效,那么请选择正确的答案,如果它对你无效,请告诉我:)我得到
    发送文件()
    不是函数错误。无论如何,我使用了
    app.use(express.static)
    并加载了html。但是angularjs和其他控制器javascript文件没有被执行。你能帮我吗?谢谢。我以前试过,但我一直得到
    res。sendFile()
    不是函数。@在单独的文件中没有人尝试这个。请确保安装了express,不要添加任何其他内容,请尝试此操作。附加文件夹,以及我忘记添加。我得到了相同的错误,当我尝试你的代码。“确保安装了express”是指通过
    npm安装-g express安装,对吗?你忘了添加哪个文件夹了?向服务器添加文件夹静态文件,这是我错过的。看来我现在得给你做一个文件夹了。老兄,我一直得到
    类型错误:res.sendFile不是一个函数。当我尝试使用你的代码时,我得到了同样的结果。我已经完成了
    npm install express
    如何发送html所需的javascript文件。我创建了一个包含所有html、angularjs和controller.js的静态文件夹。我做了
    app.use(express.static(\uu dirname+“/staticFolder”)
    ,但仍然没有执行js文件。我试着
    <!-- 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>