Express 简单测试路由未响应简单邮递员请求

Express 简单测试路由未响应简单邮递员请求,express,routes,postman,Express,Routes,Postman,我尝试创建最简单的测试路由,在本地主机上进行测试,如下所示 已验证的本地主机:3000已启动。编写了一个简单的测试文件 const express = require('express'); const router = express.Router(); router.route('/test').get((req, res) => { console.log('route found'); }); module.exports = router; 在routes目录中的索引路

我尝试创建最简单的测试路由,在本地主机上进行测试,如下所示

已验证的本地主机:3000已启动。编写了一个简单的测试文件

const express = require('express');
const router = express.Router();

router.route('/test').get((req, res) => {
  console.log('route found');
});

module.exports = router;
在routes目录中的索引路由文件中,我的路由按如下方式拆分

module.exports.api = require('./api');
module.exports.auth = require('./auth');
module.exports.root = require('./root');
module.exports.articles = require('./articles');
module.exports.test = require('./test');
我在index.js中为服务器使用如下路由:

const routes = require(__dirname + '/routes');
app.use('/test', routes.test);
用邮递员测试了一下

已将请求发送到
localhost:3000/test/test


没有回应。如何进一步排除故障?

您没有收到任何响应,因为您没有从服务器发送任何响应。您需要返回一些响应,否则客户端将一直等待响应,直到请求超时

router.route('/test').get((req, res) => {
  res.send('route not found');
});
编辑
app.use('/test',routes.test)不适用于定义路线的方式。为了让它工作,请求url应该是
/test/test
。如果希望请求url仅为
/test
,请更改

app.use('/test', routes.test);


您没有收到任何响应,因为您没有从服务器发送任何响应。您需要返回一些响应,否则客户端将一直等待响应,直到请求超时

router.route('/test').get((req, res) => {
  res.send('route not found');
});
编辑
app.use('/test',routes.test)不适用于定义路线的方式。为了让它工作,请求url应该是
/test/test
。如果希望请求url仅为
/test
,请更改

app.use('/test', routes.test);


这里有一个你想要做的工作版本

const express = require('express');
const router = express.Router();

router.get('/test', (req, res) => {
    res.send("hey");
    console.log('route found');
});

module.exports = router;
现在,在您的主模块中,您需要检查您正在收听的端口是否正确,以及您的express应用程序是否正在使用导出的路由器

const express = require('express');
const app = express();
const router = require('path/to/router/module');

app.use(router)
app.listen(8080, () => console.log("listening to port 8080"));
编辑: 你提到过

在routes目录中的索引路由文件中,我的路由按如下方式拆分

module.exports.api = require('./api');
module.exports.auth = require('./auth');
module.exports.root = require('./root');
module.exports.articles = require('./articles');
module.exports.test = require('./test');
我可以看到,在主模块中,您需要的是目录本身,而不是路由模块

const routes = require(__dirname + '/routes');
而您需要的是一个模块,而不是一个目录

const routes = require(__dirname + '/routes/yourRouteModuleName');
我刚才给出的解决方案假设了以下项目结构:

├── index.js
├── routes
│   ├── test.js
│   ├── routeModuleOrWhatever.js
│   

这里有一个你想要做的工作版本

const express = require('express');
const router = express.Router();

router.get('/test', (req, res) => {
    res.send("hey");
    console.log('route found');
});

module.exports = router;
现在,在您的主模块中,您需要检查您正在收听的端口是否正确,以及您的express应用程序是否正在使用导出的路由器

const express = require('express');
const app = express();
const router = require('path/to/router/module');

app.use(router)
app.listen(8080, () => console.log("listening to port 8080"));
编辑: 你提到过

在routes目录中的索引路由文件中,我的路由按如下方式拆分

module.exports.api = require('./api');
module.exports.auth = require('./auth');
module.exports.root = require('./root');
module.exports.articles = require('./articles');
module.exports.test = require('./test');
我可以看到,在主模块中,您需要的是目录本身,而不是路由模块

const routes = require(__dirname + '/routes');
而您需要的是一个模块,而不是一个目录

const routes = require(__dirname + '/routes/yourRouteModuleName');
我刚才给出的解决方案假设了以下项目结构:

├── index.js
├── routes
│   ├── test.js
│   ├── routeModuleOrWhatever.js
│   

但是我是否应该在本地主机中看到console.log?谢谢,但即使添加了res.send命令,Postman仍然挂在那里。@j.a是的,您应该在控制台上看到console.log。确保您的服务器正在运行,但我是否仍能在本地主机中看到console.log?谢谢,但即使添加了res.send命令,Postman仍会挂在那里。@j.a是的,您应该在控制台上看到console.log。确保服务器正在运行验证localhost是否正在运行以及路由是否已设置。我更新了我的问题以显示
应用程序。使用
命令。顺便说一句,我在本地主机上使用端口3000。我的语法有点不同。但是我确实将我的子路由更改为test1,所以超级路由和子路由之间没有混淆。对不起,我不知道发布什么代码,所以我没有发布足够的代码。我更新了我的Q以获得所有的代码,但是我有一个名为routes的文件夹,它为每一组routes都有一个文件。然后一个索引文件合并这些路由文件,这样我就可以只使用一个require命令来访问它们。现在应该发布所有相关代码。请验证localhost是否正在运行以及路由是否已设置。我更新了我的问题以显示
应用程序。使用
命令。顺便说一句,我在本地主机上使用端口3000。我的语法有点不同。但是我确实将我的子路由更改为test1,所以超级路由和子路由之间没有混淆。对不起,我不知道发布什么代码,所以我没有发布足够的代码。我更新了我的Q以获得所有的代码,但是我有一个名为routes的文件夹,它为每一组routes都有一个文件。然后一个索引文件合并这些路由文件,这样我就可以只使用一个require命令来访问它们。所有相关代码现在都应该发布。