Node.js-具有GET处理程序的Simple Express服务器不起作用

时间:2018-12-01 17:49:25

标签: javascript node.js json http express

我正在尝试像这样在Express.js中创建一个GET请求处理程序:

// import files and packages up here

const express = require('./data.json');
var app = express();
var morgan = require ('morgan')
const port = 3000;
console.log(express)

// create your express server below

// add your routes and middleware below

app.get('/', function (req, res, next) {
    res.writeHead(200)
    res.send('USER')
    console.log(express)
})

// export the express application
module.exports = app;

但是它不起作用,因此当我发送GET请求时,什么也没发生。

这是怎么回事?

1 个答案:

答案 0 :(得分:1)

首先,您甚至不需要express,而是需要JSON文件,因此应将第一行更改为:

const express = require('express');

然后,完成中间件的设置后,您需要调用app.listen,这可能是在另一个文件中进行的,但是值得一提。

因此,所有这些以及其他一些小的更改:

// Why?
// const express = require('./data.json');

// It should be like this instead:
const express = require('express');

// And if you want to require a JSON file anyway to send it back:
const data = require('./data.json');

// Require morgan:
const morgan = require('morgan')

// Create the express app:
const app = express();

// Use morgan's middleware in your express app:
app.use(morgan('combined'));

// Define the port to run the server at:
const port = 3000;

// Define your GET / route:
app.get('/', (req, res, next) => {
    // Send status code + text message:
    res.status(200).send('USER');

    // Or if you prefer to send JSON data:
    // res.status(200).json(data);
});

// Start listening on that port:
app.listen(port, () => console.log(`App listening on port ${ port }!`));

如果在安装所有依赖项后使用node <filename>.js运行此命令,则应该看到类似App listening on port 3000!的消息,然后morgan将为每个传入请求自动记录一条消息。

请注意,您可以导出应用程序,而不用app.listen(...)在文件末尾调用module.exports = app,但是在这种情况下,您需要将其导入其他地方(也许您有{{1} }文件或类似的文件),然后在此处调用server.js