2017-12-17 4 views
0

최근에 내 모든 경로 코드를 별도의 파일로 옮겼습니다. 이제는 내 경로 확인이 불규칙합니다. 다음은 간단한 예제 -expressJS 라우팅 문제, 간단한 문제 해결되지 않음

내 app.js

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

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

내 dataLoader.js

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가/부하는 잘 작동/API /로드/짐 및/API/부하 동안/두 결과 밥 :

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

I 사용자 app.all()를 대신 app.use() I 주 경로 "/ API/부하"를 해결하는 문제를 가지고 있었다 때문에 U의 모든 사람들이 그것을 고쳐주는 것처럼 보였지만 지금은 확실하지 않습니다.

"엔진"{ "노드": "^ 8.9.1" } "의존성"{ "버드": "^ 3.5.1" "신체 파서": "^ 1.15.1 ", "express ":"^ 4.13.4 ", "몽구스 ":"4.9.8 " } 제안 사항이 있으십니까? 이 수행 할 때

+1

당신은'/ API /로드/API/load'에 대한 경로를 정의했다. 그게 네가 원하는지 의심 스럽네. 또한, 아마도 app.all (path, router)가 아닌'app.use (path, router)'를 사용하고 싶을 것이다. – jfriend00

+0

'router.get ('/ bob')'은 어떨까요? 나는 당신이 app.all에서 제공하는 것에 상대적이어야한다고 느낀다. 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.all()이 아닌 app.use()을 사용해야합니다.

따라서, 귀하의 경우,이에 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

고마워요. 실제로 파일을 경로 지정하기 위해 코드를 옮겼을 때 실제로 시도했지만 오류가 있었거나 경로를 찾을 수 없습니다. "can not fired GET .."-하지만 다른 곳에서 오류가있는 것 같습니다. 나는 나중에 고치기 위해 다시 돌아 가지 않았다. – jpmyob