2017-12-17 17 views
0

私は最近、すべてのルートコードを別々のファイルに移動しましたが、現在ルートの解決には問題があります。マイdataLoader.jsexpressJSルーティングの問題、単純なものが解決しない

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

router.get('/api/load', (req, res) => { 
    res.send('Hello Loader...'); 
}); 

router.get('/api/load/bob', (req, res) => { 
    res.send('Hello Loader - Bob...'); 
}); 

router.get('/api/load/jim', (req, res) => { 
    res.send('Hello Loader - Jim...'); 
}); 

module.exports = router; 

/API /ロードが正常に動作します

マイapp.js

const express = require('express'); 
const app = express(); 

var dataLoader = require('./routes/dataLoader'); 
app.all('/api/load', dataLoader); 

中/ API /ロード/ジムと/ API /ロード - ここでは簡単な例です/ボブの両方の結果で:代わりapp.useの

Cannot GET /api/load/jim (or Cannot GET /api/load/bob, respectively) 

Iユーザーapp.all()()Iは、メインパス "/ API /ロード" を解決問題、Uを備えたので、すべての人がそれを修正するように見えましたが、今はわかりません。

"エンジン":{ "ノード": "^ 8.9.1" }、 "依存性":{ "ブルーバード": "^ 3.5.1"、 "ボディパーサー":「^ 1.15.1 "、 " express ":"^4.13.4 "、 " mongoose ":" 4.9.8 " } 提案はありますか?

+1

あなたは '/ API /ロード/ API/load'のためのルートを定義しました。私はそれがあなたが望むものだとは思わない。また、おそらく、 'app.all(path、router)'ではなく、 'app.use(path、router)'を使いたいでしょう。 – jfriend00

+0

'router.get( '/ bob')'はどうですか?私はあなたがapp.allで提供するものに相対的な感じを得る。 –

+0

そして疑問があればapp.useを使う - 私はapp.allを個人的に使用する必要性を感じなかった。 –

答えて

1

あなたがこれを行う:

app.all('/api/load', dataLoader); 

そして、その後、dataLoaderルータでは、あなたがこのようなルートを定義します。

router.get('/api/load', (req, res) => { 
    res.send('Hello Loader...'); 
}); 

api/load/api/loadいるのルートを定義しているあなたが実際にやっているのあなたが望むものではない可能性が高いです。パスは累積します。

app.use()ステートメントには、ルータ全体に適用される共通のプレフィックスが必要です。次に、ルータ自体のパスはそれに関連している必要があります。また、ルータにはapp.use()を使用し、app.all()を使用しないでください。

だから、あなたの場合には、これにdataLoaderルータを変更します。

// whole router is configured at /api/loader 
const router = require('express').Router(); 

router.get('/', (req, res) => { 
    res.send('Hello Loader...'); 
}); 

router.get('/bob', (req, res) => { 
    res.send('Hello Loader - Bob...'); 
}); 

router.get('/jim', (req, res) => { 
    res.send('Hello Loader - Jim...'); 
}); 

module.exports = router; 
+0

ありがとう、私は実際にコードを移動してファイルを転送してみましたが、これは間違っていたり、ルートが見つからなかったりしました。しかし、私は他の場所でエラーがあったと思いますが、私はその後修正して、もう一度やり直すことはしませんでした。 – jpmyob

関連する問題