mysql - 使用 NodeJS 进行 MySQL 查询的页面刷新时出现 404
问题描述
所以我有一个网站,可以在 express 上运行一些 MySQL 查询来加载相册。问题是,当我转到 /photo 时,一切正常,但如果我刷新页面,则会收到 404 NOT FOUND。如果我先去 /photo 然后在另一个 url 上再回到 /photo 也是一样的。无论它是在 prod 还是 dev 中都会发生这个问题,但只会发生在我的服务器上,而不是本地服务器上。
这就是我得到的:
NotFoundError: Not Found
at /home/vincdgfq/sachalebas/app.js:53:7
at Layer.handle [as handle_request] (/home/vincdgfq/nodevenv/sachalebas/9/lib/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/vincdgfq/nodevenv/sachalebas/9/lib/node_modules/express/lib/router/index.js:317:13)
at /home/vincdgfq/nodevenv/sachalebas/9/lib/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/vincdgfq/nodevenv/sachalebas/9/lib/node_modules/express/lib/router/index.js:335:12)
at next (/home/vincdgfq/nodevenv/sachalebas/9/lib/node_modules/express/lib/router/index.js:275:10)
at /home/vincdgfq/nodevenv/sachalebas/9/lib/node_modules/express/lib/router/index.js:635:15
at next (/home/vincdgfq/nodevenv/sachalebas/9/lib/node_modules/express/lib/router/index.js:260:14)
at Function.handle (/home/vincdgfq/nodevenv/sachalebas/9/lib/node_modules/express/lib/router/index.js:174:3)
at router (/home/vincdgfq/nodevenv/sachalebas/9/lib/node_modules/express/lib/router/index.js:47:12)
如果我删除所有错误处理程序,我只会得到一个
CANNOT GET /501.shtml
可以在这里找到网站:https ://sachalebas.com/photo
提前感谢,如果有人知道我应该在哪里寻找这个错误,我完全迷路了。
编辑:
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var bodyParser = require('body-parser');
var session = require('express-session');
require('./controllers/userController');
const oneYear = 60 * 1000 * 60 * 24 * 7;
const xssFilter = require('x-xss-protection');
const noSniff = require('dont-sniff-mimetype');
require('dotenv').config({ path:"process.env"});
const compression = require('compression');
var indexRouter = require('./routes/index');
var app = express();
app.use(xssFilter());
app.use(noSniff());
app.use(compression());
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(express.static(__dirname + '/public', {maxAge: oneYear, dotfiles:'allow'}));
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({
extended: false
}));
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(session({
secret: process.env.SECRET,
resave: false,
saveUninitialized: false,
maxAge: 200000
}));
app.use('/', indexRouter);
// catch 404 and forward to error handler
app.use(function (req, res, next) {
next(createError(404));
});
// error handler
app.use(function (err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
这是我的 app.js
解决方案
您的问题与后端无关。
这意味着存在竞争条件的客户端问题。
为避免它尝试包装所有代码:https ://sachalebas.com/ressources/js/script.js
代替:
window.onload = function() {
// here goes all js code from ressources/js/script.js
}
或确保您在 css 中没有在图像之前渲染的阻塞层。
推荐阅读
- rabbitmq - 发布者确认/发布者返回/AmqpConnectException 不起作用
- ios - 当默认设置为 UITextAlignmentNatural 时,如何判断 UITextView 上的文本对齐方式
- jquery - 使用 React Native 的复合解析查询
- amazon-web-services - Traefik https 通过 kubernetes 部署和 AWS 认证
- sql - 使用 SQL SUBSTR 一个整数
- html - 我应该使用
- c++ - C++ 嵌套类模板错误 C2440“=”:无法从“类型”转换为“相同类型”
- django - 如何删除Django模型而不是数据库?
- python - zipfile 解压 zip 到一个文件夹
- wordpress - WooCommerce REST API:自动/woocommerce