gpt4 book ai didi

node.js - Express.js 应用程序错误 : the browser is stuck in loading state when trying to access certain route

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:36 25 4
gpt4 key购买 nike

我正在开发 blogging application (单击链接查看 GitHub 存储库) Express , EJS和 MongoDB。

出于某种原因,我一直无法识别,当我尝试访问:http://localhost:3000/dashboard时,它(浏览器)陷入加载状态,并且从未真正加载仪表板路线。

在“entry”index.js 文件中,我有:

const express = require('express');
const dotenv = require('dotenv');
const mongoose = require('mongoose');
const path = require('path');
const morgan = require('morgan');
const expressLayouts = require('express-ejs-layouts');
const app = express();

dotenv.config();

//Conect to MONGODB
mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => {
console.log('conected');
});

mongoose.connection.on('error', err => {
console.log(`DB connection error: ${err.message}`);
});

// Set static directory
app.use(express.static(path.join(__dirname, 'public')));

// Set views directory
app.set('views', path.join(__dirname, 'views'));

// Set view engine
app.set('view engine', 'ejs');

// Use Express Layouts
app.use(expressLayouts);

// Middleware
app.use(morgan('dev'));

// Bring the Posts Routes
const postsRoute = require('./routes/front-end/posts');

// Get Posts
app.use('/', postsRoute);

// Get Single Post
app.use('/:id', postsRoute);

// Bring the Dashboard
const dashboardRoute = require('./routes/admin/dashboard');

// Get Dashboard
app.use('/dashboard', dashboardRoute);

const port = process.env.PORT || 3000;

app.listen(port, () => console.log(`Listening on port ${port}!`));

仪表板路线(routes\admin\dashboard.js)中,我有:

const express = require('express');
const dashboardController = require('../../controllers/admin/dashboard');

// Express router
const router = express.Router();

// Dysplay Dashboard
router.get('/dashboard', dashboardController.displayDashboard);

module.exports = router;

仪表板 Controller 中时:

const Post = require('../../models/post');

exports.displayDashboard = (req, res, next) => {
res.send('Dashboard');
};

routes/front-end/posts.js中我有:

const express = require('express');
const postsController = require('../../controllers/front-end/posts');

// Express router
const router = express.Router();

// Get Posts
router.get('/', postsController.getPosts);

// Get Single Post
router.get('/:id', postsController.getSinglePost);

module.exports = router;

帖子 Controller :

const Post = require('../../models/post');

exports.getPosts = (req, res, next) => {
const posts = Post.find({}, (err, posts) => {
if(err){
console.log('Error: ', err);
} else {
res.render('default/index', {
layout: 'default/layout',
website_name: 'MEAN Blog',
page_heading: 'XPress News',
page_subheading: 'A MEAN Stack Blogging Application',
posts: posts
});
}
});
};

exports.getSinglePost = (req, res, next) => {
let id = req.params.id;
if (id.match(/^[0-9a-fA-F]{24}$/)) {
Post.findById(id, function(err, post){
if(err){
console.log('Error: ', err);
} else {
res.render('default/singlepost', {
layout: 'default/layout',
website_name: 'MEAN Blog',
post: post
});
}
});
}
};

IMPORTANT: It is necessary that every single post is displayed under the root url, for example: http://localhost:3000/5e3063dbfa749d9229bab26f where 5e3063dbfa749d9229bab26f is, of course the post id.

这是出于搜索引擎优化 (SEO) 目的。我打算稍后用帖子 slug 替换 id:http://localhost:3000/my-great-post

我怎样才能实现这个目标?

最佳答案

已修复,用于完整运行示例克隆 node-cheat XPressBlog并运行 node index,然后运行 ​​npm i

将浏览器指向 http://localhost:3000/dashboard ,输出:

This is Dashboard

http://localhost:3000 ,输出:

This will load all posts; continue with your logic!

http://localhost:3000/my-great-post ,输出:

This will load single post with slug : my-great-post

你做错了什么?

您对 app.use( 的使用感到困惑,因此根据您的需要(如您的帖子中所述)修复了这些问题,如下所示:

const dashboardRoute = require("./routes/admin/dashboard");
app.use('/dashboard', dashboardRoute);

const postsRoute = require('./routes/front-end/posts');
app.use('/', postsRoute);

如果您想了解有关 app.use 的更多信息,请点击以下链接:

关于node.js - Express.js 应用程序错误 : the browser is stuck in loading state when trying to access certain route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60054544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com