首页 > 解决方案 > Express js 4路由直接使用来自其他文件的函数指针返回404

问题描述

这似乎应该如此简单。处理路由的函数在一个单独的文件中。但是,在需要该文件并将函数指针传递给app.get它之后,它会返回 404。

我有一个简单的文件,它以函数作为键导出一个对象。

src/controllers/Block.js

module.exports = {
  getBlocks: (req, res, next, body) => {
    res.send('blocks')
  }
}

然后在索引文件中创建一个基本的 Express 应用程序并导入该 Blocks.js 文件。我将该getBlocks功能用于/blocks路线。

src/index.js

const express = require('express')
const block = require('./controllers/Block')

const app = express()
const serverPort = 3000;
app.get('/blocks', block.getBlocks)
app.get('/home', (req, res) => {
  res.send('home')
})

app.listen(serverPort, function () {
  console.log('Your server is listening on port %d (http://localhost:%d)', serverPort, serverPort);
});

因此,虽然block.getBlocks显然是一个函数,但当您访问时它仍然返回 404 localhost:3000/blocks。但是,当您访问localhost:3000/home它时,它会像您期望的那样呈现“家”。

我到底在这里想念什么?

标签: javascriptnode.jsapiexpressroutes

解决方案


好的,我在本地安装了它并玩了一下,这使它工作:

src/controllers/Block.js

module.exports = {
  getBlocks: (req, res) => {
    res.send('blocks')
  }
}

删除body论据。我无法解释这一点。


推荐阅读