使用 Nodejs 调用 API 时如何解决 err_connection_refused

How to solve err_connection_refused when calling to an API using Nodejs

我是 Vue.js 开发的新手,正在尝试使用 nodejs 作为我的后端来调用 api。当我在 运行 应用程序之后检查控制台时,我希望收到一个其中包含空名称变量的代理,但我收到了如下图所示的错误。 Image of error in console

我的 APP.VUE 文件中的 JS 是:

import axios from 'axios';
  export default {
    data() {
      return {
        baseApiUrl: 'http://localhost:4000/api',
        stock: {
          name:''
        },
        Stocks: {},
        StocksList: {

        }
      }
    },
    created (){
      this.getStocks()
    },
    methods: {
      getStocks() {
        axios.get(this.baseApiUrl).then(res => {
          this.Stocks = res.data;
          let names = Array.prototype.map.call(this.Stocks, s=>s.name).toString();
          axios.get(`https://min-api.cryptocompare.com/data/pricemultifull?fsyms=${names}&tsyms=USD,EUR&api_key=1857384eb534d30bc84db3e18bfa41915ce3955213e3f7a699c33a67c28101c1`).then(res => {
            this.StocksList = res.data
            console.log(this.StocksList)
          }).catch(error => {
            console.log(error)
          })
        })
      },
      handleSubmitForm() {
        axios.post(this.baseApiUrl + '/add-stock', this.stock).then(() => {
          console.log(this.stock)
          this.stock = {
            name:''
          }
          this.getStocks()
        }).catch(error => {
          console.log(error)
        })
      }
    }
  }
我的 app.js 中的 JS 是:

let express = require('express'),
    database = require('./database'),
    bodyParser = require('body-parser');


// Connect mongoDB
const mongoose = require('mongoose')
mongoose.Promise = global.Promise;
mongoose.connect(database.db, {
  useNewUrlParser: true,
  useUnifiedTopology: true
}).then(() => {
  console.log("Database connected")
 },
 error => { 
  console.log("Database could't be connected to:" + error)
 }
)

const stockEndPoint=require('../backend/routes/stock.route')
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: false
}));
const cors = require('cors')
const corsOptions = {
    credentials: true,
    origin: 'http://localhost:4000',  
    allowedHeaders: ['Content-Type'],
    optionsSuccessStatus: 200
  };
app.use(cors(corsOptions));

// API
app.use('/api', stockEndPoint)

// Create port
const port = process.env.PORT || 4000;                       
const server = app.listen(port, () =>{
  console.log('Connected to port ' + port)
})

// Find 404
app.use((req, res, next) =>{
  next(createError(404));
});

// error handler
app.use(function (err, req, res, next){
    console.error(err.message);
    if (!err.statusCode) err.statusCode = 500;
    res.status(err.statusCode).send(err.message);
});

我的完整代码可以在 github 存储库中访问:Github Repo 请随时联系或提出问题以获取更多信息,因为我真的很难解决这个问题。

ERR_CONNECTION_REFUSED 表示 Vue 应用程序向 http://localhost:4000 发出请求,但没有服务器在端口 4000 上响应它。这意味着在您的 app.js 中编程的服务器不是 运行 或不符合预期。请以 node app.js 开头并确保没有出现错误消息。您可以通过在浏览器中输入 http://localhost:4000 来测试服务器是否运行:如果是 运行,也称为 'listening',则结果将与输入 http://localhost:3999 时不同。在后者上,将出现 'Connection refused' 之类的错误消息。

如果这不起作用,请通过在终端中输入 echo $PORT 或 Windows echo %PORT% 检查是否设置了环境变量 PORT