javascript - 无法连接到 localhost 5000
问题描述
我正在尝试将我的节点应用程序与 MongoDB 连接起来。当我得到输出时,代码似乎正在执行 服务器正在端口 5000 上运行 MongoDB 数据库连接在终端上成功建立但是当我尝试从失眠中发布获取时,大约需要两分钟才能收到错误错误:服务器没有返回任何内容(没有标题,无数据)
const express = require('express');
//const bodyParser = require('body-parser');
const cors = require('cors');
const mongoose = require('mongoose');
require('dotenv').config();
const app = express();
const port = process.env.PORT || 5000;
app.use(cors());
app.use(express.json());
const uri = process.env.ATLAS_URI;
mongoose.connect( uri, {useUnifiedTopology: true, useNewUrlParser: true}, () => { console.log("MongoDB database conection established successfully")}).catch(err => console.log(err));
const exercisesRouter = require('./routes/exercises');
const usersRouter = require('./routes/users');
app.use('/exercises', exercisesRouter);
app.use('/users', usersRouter);
//emitter.setMaxListeners();
app.listen(port, () => {
console.log('Server is running on port : ' + port);
});
我正在学习教程,这些是我拥有的其他文件 exercise.model.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const exerciseSchema = new Schema({
username: {type: String,required: true},
description: {type: String,required: true},
duration: {type: Number,required: true},
date: {type: Date,required: true},
},
{
timestamps: true,
});
const Exercise = mongoose.model('Exercise', exerciseSchema);
module.exports = Exercise;
练习.js
const router = require('express').Router();
let Exercise = require('../models/exercise.model');
router.route('/').get((req, res) => {
Exercise.find()
.then(exercises => res.json(exercises))
.catch(err => res.status(400).json('Error: ' + err));
});
router.route('/add').post((req, res) => {
const username = req.body.username;
const description = req.body.description;
const duration = Number(req.body.duration);
const date = Date.parse(req.body.date);
const newExercise = new Exercise({
username,
description,
duration,
date,
});
newExercise.save()
.then(() => res.json('Exercise added!'))
.catch(err => res.status(400).json('Error: ' + err));
});
module.exports = router;
用户.js
const router = require('express').Router();
let User = require('../models/user.model');
router.route('/').get((req,res) => {
User.find()
.then(users => res.json(users))
.catch(err => res.status(400).json('Error: ' + err));
});
router.route('/add').post((req,res) => {
const username = req.body.username;
const newUser = new User({username});
newUser.save()
.then(() => res.join('User added!'))
.catch(err => res.status(400).json('Error: ' + err));
})
module.exports = router;
用户模型.js
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
username: {
type: String,
required: true,
unique: true,
trim: true,
minlenght: 3
},
},{
timestamps: true,
});
const User = mongoose.model('User', userSchema);
module.exports = User;
当我在浏览器上访问http://localhost:5000并且在检查器错误中显示 Refused to load the image ' http://localhost:5000/favicon.ico '时,我也得到 Cannot GET /因为它违反了以下内容内容安全策略指令:“default-src 'none'”。请注意,'img-src' 没有显式设置,因此 'default-src' 用作后备。这可能很多,但我正在尝试学习如何将后端与前端连接起来,如果有人可以指导我,我将不胜感激。提前谢谢你。
解决方案
这个问题似乎与CORS有关。这意味着您创建的 express API 不会接受来自其他域的调用,并且期望交互来自同一应用程序。当您使用失眠症时,它是一个单独的桌面应用程序或其他东西,快递将阻止对路线的访问。这是默认行为。
您需要获取CORS 中间件并根据需要设置路由。只需按照文档。
允许所有访问的快速测试:
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.get('/users', (req, res) => {...
...
推荐阅读
- java - 读取二进制文件中的约会对象在打印字符串中包含类名和大括号
- python - 如何手动覆盖选择 keras 超参数?
- typescript - × TypeError: Cannot read properties of undefined (reading 'indexOf')
- javascript - Javascript 查询选择器不适用于 HTML
- javascript - 当其 isDisabled 时更改背景颜色基础 React-select
- regex - Dreamweaver 中的正则表达式:错误?
- javascript - 您可以在不参考运行或编译时间的情况下定义静态和动态语言吗?
- c# - StackOverflow 与 C# 中的随机名称生成器
- java - 函数而不是静态实用程序方法
- r - 如何在 r 中生成混合分布?