Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将GET请求从app.js中的root重新路由到Express.js中的controllers文件夹中的路由?_Javascript_Node.js_Express - Fatal编程技术网

Javascript 如何将GET请求从app.js中的root重新路由到Express.js中的controllers文件夹中的路由?

Javascript 如何将GET请求从app.js中的root重新路由到Express.js中的controllers文件夹中的路由?,javascript,node.js,express,Javascript,Node.js,Express,我基本上是想在Express中从Sinatra那里复制这个: get '/' do redirect '/channels' end 我正在尝试构建一个Node.js/Express.js应用程序,并开始合并MVC结构。我的app.js文件包含我的/路线,如下所示: app.js app.get('/', function(req, res) { res.redirect('/search'); }) const express = require('express'); con

我基本上是想在Express中从Sinatra那里复制这个:

get '/' do
 redirect '/channels'
end
我正在尝试构建一个Node.js/Express.js应用程序,并开始合并MVC结构。我的
app.js
文件包含我的
/
路线,如下所示:

app.js

app.get('/', function(req, res) {
  res.redirect('/search');
 })
const express = require('express');  
const app = express();


app.get('/search', function(req, res) {    
 res.render('index.js'); 
})
我希望它重定向到
controllers/search.js
中的
/search
路由,其中包含以下内容:

控制器/search.js

app.get('/', function(req, res) {
  res.redirect('/search');
 })
const express = require('express');  
const app = express();


app.get('/search', function(req, res) {    
 res.render('index.js'); 
})
浏览器确实重定向到
localhost:3000/search
,但它显示
无法获取/search
。我在Express中看到的所有关于重新路由的教程和文档都没有显示整个文件,因此我无法判断是否必须
要求
导出
任何ala Node.js

感谢您的帮助

试试这个

server.js

var http = require('http');
var express = require('express');
var searchRouter = require('./searchRouter');
var app = express();

app.use('/', searchRouter);

var server = http.createServer(app);
server.listen(3000);
searchRouter.js

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

router.get('/', function(req, res, next) {
  res.send('Nope, try /search');
});

router.get('/search', function(req, res, next) {
  res.send('yeah!! you found me');
});

module.exports = router;
您可以通过以下方式扩展此逻辑:

app.use('/search', searchRouter);
搜索路由器

// this handles /search
router.get('/', function(req, res, next) {}

//this handles /search/apple
router.get('/:id', function(req, res, next) {}

我经常选择另一种方法。但是你所说的看起来像是
mountpath
可以帮助你:确保导入你的搜索文件,它将在你的app.js中可用。Rajats模式应该让您了解如何进行此操作。你可以让你的路由器在另一个文件中导入其他路由器,所有后续路由器在使用之前只需要导入到该文件中。所以我必须导入它,因为app.js会说,“我不知道“/search”是什么”?它现在知道它是什么了,因为我们需要它,search.js导出了它?我熟悉Node.js必须要求/导出东西,但对routes也不理解。因此,在看到您的响应之前,我做了类似的事情,现在我正在点击route。让我看看我是否理解正确。要使server.js能够重新路由,它必须需要searchRouter.js,它正在导出路由器(用我们放入的逻辑处理GET请求)?正确。在server.js中,我们告诉express router,对于所有“/”请求,请在继续之前执行“此操作”。阅读中间件内部的中间件,我们根据您的喜好设置实际的路由\控制器。中间软件是非常强大的,可以在处理之前根据您的请求进行操作。