Javascript Node Js express路由器不工作

Javascript Node Js express路由器不工作,javascript,node.js,web-services,express,Javascript,Node.js,Web Services,Express,我正在学习NodeJS和express,我正在学习express路由,我在rest.js中有以下代码 const http = require('http'); const express = require('express'); const widgetRouter = require('./rest/widgets'); const app1 = express(); const server = http.createServer(app1); app1.get('/

我正在学习NodeJS和express,我正在学习express路由,我在rest.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;

但是,当我尝试从postman测试rest api()时,它说无法获取/api/widgets

您已经导入并初始化了express模块,但随后您使用http模块启动了一个服务器。您应仅使用Express:

您还应该使用
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');
});
你也可以试试

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);
});

我也用过这个,我试着从rest.js中的app1.listen开始,但没有work@ujjwalsingh它给了你什么错误?可能widgetRouter的需求路径错误,或者您仍然在使用两个不同的Express实例(app和app1),并且您将它们混合在一起(应该只有一个)确实有效,但方法似乎很复杂,不适合初学者