2017-02-13 7 views
2

JS и я учу узел JS вместе с курьерским, и я узнавал экспресс маршрутизации я следующий код в rest.jsУзел Js экспресс-маршрутизатор не работает

const http = require('http'); 
const express = require('express'); 
const widgetRouter = require('./rest/widgets'); 

const app1 = express(); 

const server = http.createServer(app1); 



app1.get('/api',widgetRouter); 


server.listen(3000,function(){ 
    console.log('server started in port 3000'); 

}); 



const app = express(); 

и я также подать widgets.js

const express = require('express'); 

const widgetRouter = express.Router(); 

widgetRouter.route("/widgets") 
    .get(function(req,res){ 
     res.json({"abc":"hello"}); 
    }) 
    .post(); 

widgetRouter.route("/widgets/:widgetId") 
    .get() 
    .put() 
    .delete(); 



module.exports = widgetRouter; 

, но когда я пытаюсь проверить остальное апи (http://localhost:3000/api/widgets) с почтальона он говорит, что не может получить/API/виджеты

ответ

6

импортированы и инициализируются экспресса, но затем вы запускаете сервер с модулем http. Вы должны использовать только Экспресс:

Также вы должны использовать app.use('/api',widgetRouter) вместо app.get('/api', widgetRouter), который является прямым промежуточным программным обеспечением.

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

const widgetRouter = require('./rest/widgets'); 

app.use('/api', widgetRouter); 
app.get('/', function(req, res) { 
    res.send('Home'); 
}); 

app.listen(3000, function(){ 
    console.log('server started in port 3000'); 
}); 
+0

Я использовал, что один слишком я попробовал, начиная с app1.listen в rest.js , но это не сработало –

+0

@ujjwalsingh Какая ошибка это дает вам? Возможно, для виджета Router требуется неправильный путь, или, может быть, вы все еще используете два разных экземпляра Express (app и app1), и вы их смешиваете (их должно быть только одно) – Tolen

1

Вы также можете попробовать это.

rest.js

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

const app = express(); 

require('./widgets')(app, router); 

app.get('/', function(req, res) { 
    res.send('Home'); 
}); 

app.listen(3000,function(){ 
    console.log('server started in port 3000'); 
}); 

widgets.js

module.exports = function(app, router){ 
    router.route("/widgets") 
     .get(function(req,res){ 
      res.json({"abc":"hello"}); 
     }) 
     .post(); 

    router.route("/widgets/:widgetId") 
     .get() 
     .put() 
     .delete(); 

    app.use('/api', router); 
}); 
+0

Это действительно работает, но путь кажется сложным и не дружественным к новичкам –

 Смежные вопросы

  • Нет связанных вопросов^_^