MEAN-stack应用程序:从angular2前端到表示后端的REST API调用不起作用。错误:ERR_CONNECTION_REFUSED

时间:2017-12-11 22:05:42

标签: angularjs node.js express mean-stack meanjs

我正在构建一个MEAN堆栈应用程序,遵循本教程:https://www.youtube.com/watch?v=PFP0oXNNveg&t=3236s

问题:我尝试从我的angular2前端向我的快速后端发出http.get()请求。它不起作用,我得到错误:ERR_CONNECTION_REFUSED: The Error

我的前端是在localhost / 4200上,而我的后端在localhost / 3000上。我认为问题可能是这样,所以我搜索解决方案并尝试了这里描述的所有内容:Angular-CLI proxy to backend doesn't work(代理localhost端口的解决方案),这对我不起作用。我仍然得到错误。

这是我的代码:

API调用的服务方法

var express = require('express'); var path = require('path'); var bodyParser = require('body-parser'); var start = require('./routes/start'); var registration = require('./routes/registration'); var port = 3000; var app = express(); //View Engine app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.engine('html', require('ejs').renderFile); //Set Static Folder app.use(express.static(path.join(__dirname, 'client'))); app.use(express.static(path.join(__dirname, 'client', 'dist'))); //Body Parser MW app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: false})); app.use('/', start); app.use('/api', registration); app.listen(port, () =>{ console.log('Server started on port '+port); });

server.js

//get all the user
router.get('/users', function(req, res, next){
  db.users.find(function(err, usrs){
    if(err){
      res.send(err);
    }
    res.json(usrs);
  });
});

//get single user
router.get('/user/:id', function(req, res, next) {
  db.users.findOne({_id: mongojs.ObjectId(req.params.id)}, function(err, usr){
    if(err){
      res.send(err);
    }
    res.json(usr);
  });
});

//save a new user
router.post('/user', function(req, res, next) {
  var user = req.body;
  if(!user.name || !user.password){
    res.status(400);
    res.json({
      "error": "Bad Data"
    });
  } else {
      db.users.save(user, function(err, user) {
        if(err){
          res.send(err);
        }
        res.json(user);
      });
    }
});

module.exports = router;

我尝试使用API​​调用的路线

NSPredicate(format: "SUBQUERY(cookieIngredients, $X, $X.in_kitchen == true).@count == cookieIngredients.@count")

1 个答案:

答案 0 :(得分:0)

我猜测是因为您试图转到'http://localhost/3000/api/users' /localhost而不是:,所以你&# 39;重新访问端口80上的localhost,这是默认值。将其切换为'http://localhost:3000/api/users',这有帮助吗?