我想从一个 nodejs 文件重定向到另一个 nodejs 文件。我使用 res.redirect(URL),但执行时显示“无法获取 /nodepage”
目前我正在使用
// Handler for GET /
app.get('/nodepostgres', function(req, res){
res.redirect('/nodepost.js?a=1');
});
我认为您的问题中有些事情没有正确解释或无法正确理解。
我不确定“从一个 nodejs 文件重定向到另一个 nodejs 文件”是什么意思。您似乎认为节点脚本文件对应于 URL(或页面)。那是错误的。节点脚本对应于一个应用程序,该应用程序可能(或可能不)通过多个 URL 公开多个页面,并且可以从其他脚本文件导入应用程序逻辑(您将为站点或应用程序运行单个根脚本文件)。它与您可能知道的(香草,无框架)PHP 完全不同。
通过不同的 url 暴露不同的页面称为路由,所有关于路由的 Express 文档都可以在这里找到。
我的理解是,您尝试为每个脚本创建一个函数/页面/网址:nodepost.js 文件是一个页面。代码组织是一件好事,但让我们先关注 node + express 是如何工作的。
据我了解,您的应用程序有一些公开的网址,比如说:
注意:我们忘记了 file = page 的 id,我们不希望扩展名出现在 URL 上,所以nodepost.js
变成nodepost
您可以做的是设置 3 个 url expositions:
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');
});
那是你要的吗 ?
然后,这是一种更优雅的处理参数(“a”)的方法。
app.get('/notepost/:a', function(req, res) { // called via /nodepost/here_goes_a_valu ; no "?"
var a = req.params.a;
});
为什么更好?