我想从一个nodejs文件到另一个nodejs文件进行重定向。我使用res.redirect(URL),但执行时说“不能GET / nodepage”
目前我正在使用
// Handler for GET /
app.get('/nodepostgres', function(req, res){
res.redirect('/nodepost.js?a=1');
});
答案 0 :(得分:4)
我认为有些事情你没有正确解释或者在你的问题中没有正确理解。
我不确定您的意思"从一个nodejs文件重定向到另一个nodejs文件"。您似乎认为节点脚本文件对应于URL(或页面)。那是错的。节点脚本对应于可能(或可能不)通过多个URL公开多个页面的应用程序,并且可以从其他脚本文件导入应用程序逻辑(您将为站点或应用程序运行单个根脚本文件)。它与你所知道的(vannilla,没有框架)PHP完全不同。
通过不同的网址公开不同的网页称为路由,有关路由的所有Express文档都可以是found here。
我的理解是你试图为每个脚本创建一个函数/ page / url:nodepost.js文件是一个页面。代码组织是一件好事,但我们首先关注node + express如何工作。
根据我的理解,你的应用程序有一些暴露的网址,让我们说:
注意:我们忘记了file = page的ID,我们不希望在网址上显示扩展程序,因此nodepost.js
变为nodepost
你可以做的是设置3个网址:
app.get('/', function(req, res) { res.render('home'); }); // render the home page
app.get('/nodepost', function(req, res) { // expose the nodepost function
var a = req.params.a;
doSomethingWith(a);
// res.render, res.send ? whatever you want...
]);
app.get('/nodepostgres', function(req, res){ // use of res.redirect(url[, status])
res.redirect('/nodepost');
});
这就是你想要的吗?
然后,这是处理params的更优雅方式(" a")。
app.get('/notepost/:a', function(req, res) { // called via /nodepost/here_goes_a_valu ; no "?"
var a = req.params.a;
});
为什么会更好?