使用 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
。
我是 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)
})
}
}
}
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
。