ある nodejs ファイルから別の nodejs ファイルにリダイレクトしたいと考えています。res.redirect(URL) を使用しましたが、実行すると「cannot GET /nodepage」と表示されます
現在、私は使用しています
// Handler for GET /
app.get('/nodepostgres', function(req, res){
res.redirect('/nodepost.js?a=1');
});
あなたの質問には、適切に説明していない、または適切に理解していないことがいくつかあると思います。
「あるnodejsファイルから別のnodejsファイルへのリダイレクト」について何を意味するのかわかりません。ノード スクリプト ファイルが URL (またはページ) に対応していると考えているようです。それは間違っている。ノード スクリプトは、複数の URL を介して複数のページを公開する (または公開しない) アプリケーションに対応し、他のスクリプト ファイルからアプリケーション ロジックをインポートできます (サイトまたはアプリケーションに対して単一のルート スクリプト ファイルを実行します)。これは、(バニラ、フレームワークなし) PHP で知っているものとはまったく異なります。
異なる URL を介して異なるページを公開することをルーティングと呼びます。ルーティングに関するすべての Express ドキュメントは、ここにあります。
私が理解しているのは、スクリプトごとに関数/ページ/ URLを作成しようとしているということです:nodepost.jsファイルはページです。コード編成は良いことですが、最初にノード + エクスプレスがどのように機能するかに注目しましょう。
私が理解していることから、アプリケーションにはいくつかの公開された URL があります。
nodepost.js
注: file = page の id を忘れてしまったので、URL に拡張子を表示したくないので、nodepost
あなたができることは、3つのURLエクスポジションをセットアップすることです:
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;
});
なぜそれが良いのですか?