服务器无法提供响应

时间:2017-10-12 13:07:02

标签: javascript html node.js express

我是node.js的新手,并想知道为什么这不按计划运行。我用了,

res.end("Hello world")

过去展示" Hello World"在页面上。

现在,使用下面的代码,好像是在同一地址听,但我在那里导航,它没有进入页面!它就像express没有提供回复一样。我很困惑。

web.js

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

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    //res.end('Hello World\n');
});

server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);
});

app.get('/', function(request, response) {
    response.sendFile('index.html');
});

index.html(同一目录)

<html>
<header>
    <title>
        This is title
    </title>
</header>

<body>
    Hello world
</body>

</html>

控制台输出

Atom Runner: web.js

Server running at http://127.0.0.1:3000/

1 个答案:

答案 0 :(得分:4)

你实际上并没有使用快递。您正在为其附加路由,但您正在创建一个单独的服务器对象并且 侦听。你应该有更多这样的东西:

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

const hostname = '127.0.0.1';
const port = 3000;

app.get('/', function(request, response){
    response.sendFile('index.html');
});

// Have the actual express app listen, not server
app.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

Express'的目的是包装在node.js中创建服务器所涉及的样板。看一下Express Hello world example。该示例甚至不require http模块:

const express = require('express')
const app = express()

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

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