2017-10-21 1 views
0

私はノードエクスプレスアプリで '/ signup'へのルートを追加しようとしています。 '/'へのGETは機能していますが、 '/ signup'は404が見つかりません。ノードエクスプレスルートが見つからないのはなぜですか?

index.jsとsignup.jsは両方ともルートフォルダにあります。

signup.hbsとindex.hbsはどちらもmy viewsフォルダにあります。

index.js:index.hbsで

const express = require('express'); 
const engines = require('consolidate'); 
var signup = require('./signup'); 

const app = express(); 
app.engine('hbs', engines.handlebars); 
app.set('views', './views'); 
app.set('view engine', 'hbs'); 

app.get('/', (req, res) => { 
    res.render('index'); 
}); 

app.use('/signup', signup); 

signup.js

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

router.get('/', function (req, res) { 
    res.render('signup', {text:"Send some text to template here"}); 
}); 

module.exports = router; 

リンク(404で結果が見つかりません):

<a style="font-weight:bold; text-decoration:none;" href="/signup">Sign up</a> 
+0

'if(err){throw err;}を宣言した後、' function'の中に 'res.render'を追加しようとしました。 } 'を実行し、' if throw err'の後に 'res.render'を実行しますか? – Gabriel

答えて

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

router.post('/', function (req, res) { 
    res.render('signup', {OCR:"OCR TEXT"}); 
}); 

module.exports = router; 

サーバであります適切なメソッド呼び出しが見つからないため、404を送信していますページ。

あなたはNode.jsの中

+1

私は実際にこのリクエストに関するデータを送信していません。ユーザーにサインアップページを表示するためのGETリクエストをしたいだけです。私はがGET要求を実行すると仮定しています。 – Feyman81

+0

通常のリンク**は** GETリクエストをトリガーします。 – Quentin

0

モジュールは、デフォルトではシングルトンあるサーバーにいくつかのデータを送信する場合は、したがって、複数回のモジュールをロードする必要がないので、あなたのルート上のPOSTメソッドを使用する必要があります。 express.jsをロードするファイルとしてindex.jsを使用する場合は、定義したexpress変数をエクスポートし、index.jsをsignup.jsにインポートすることを検討してください。

index.js

const express = require('express'); 
const app = express(); 
... 
module.exports{ 
    app 
} 

signup.jsまた

const index = require('./index'); 
... 
const router = index.app.Router(); 

は、ちょっとオフであるapp.useの使用のように思えます。モジュール(signup.js)を送信するだけで、ルーターやエクスプレスアプリを提供するか、独自のミドルウェアを作成する必要があります。ここでそれについてもっと読むことができます:https://expressjs.com/en/4x/api.html#middleware-callback-function-examples

+0

以前私のindex.jsは 'exports.app = functions.https.onRequest(app);'で終わっていました。私は上で概説したようにmodule.exportsで修正しようとしましたが、index.app.Routerは "未定義のプロパティルーターを読み取ることができません"を返します。 – Feyman81

+0

私は、ビューをレンダリングせずにルーティングが正常に機能していることを確認しました(代わりにオブジェクトを送信したばかりです)。したがって、この問題は、ビューの位置を特定することである可能性があります。 'view'フォルダがルートフォルダにあると仮定すると、これを試すことができます:' app.set( 'views'、path.join(__ dirname、 'views')); ' 幸運を祈る! – alrodseg

関連する問題