gpt4 book ai didi

node.js - 所有页面返回与 OVH Cloud Hosting 相同的内容

转载 作者:搜寻专家 更新时间:2023-10-31 23:26:08 25 4
gpt4 key购买 nike

我最近在本地完成了一个 Node.js 网站,它运行良好,但我注意到将网站在线上传到 OVH 云虚拟主机时出现了一些问题。所有页面,甚至那些不应该存在的页面,都返回主页的内容。

我用 Node.js 运行 Express,文件结构是用 express-generator 创建的.我的 app.js 文件包含以下内容:

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var expressHbs = require('express-handlebars');
var Handlebars = require('handlebars');
var HandlebarsIntl = require('handlebars-intl');
var mongoose = require('mongoose');

var indexRouter = require('./routes/index');
var blogRouter = require('./routes/blog');
var blogItemRouter = require('./routes/blog-item');
var portfolioRouter = require('./routes/portfolio');
var contactRouter = require('./routes/contact');
var iBlogPostsRouter = require('./routes/i/blog-posts');
var iContactRouter = require('./routes/i/contact');
var iPortfolioItemsRouter = require('./routes/i/portfolio-items');
var portfolioItemRouter = require('./routes/portfolio-item');

HandlebarsIntl.registerWith(Handlebars);

var app = express();

// view engine setup
app.engine('.hbs', expressHbs({defaultLayout: 'layout', extname: '.hbs'}));
app.set('view engine', '.hbs');
app.disable('etag');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/blog', blogRouter);
app.use('/blog/:title', blogItemRouter);
app.use('/portfolio', portfolioRouter);
app.use('/contact', contactRouter);
app.use('/i/blog-posts', iBlogPostsRouter);
app.use('/i/contact', iContactRouter);
app.use('/i/portfolio-items', iPortfolioItemsRouter);
app.use('/portfolio/:title', portfolioItemRouter);

// 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) {
res.status(err.status || 500);
res.render('error', {title: err.status + ' ' + err.message});
});

module.exports = app;

除了呈现不同的模板外,所有路由器都具有相同的代码。以下是 indexRouter 的示例:

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'About', about: true });
});

module.exports = router;

问题是每个页面,甚至是我的 .js.css 文件,都会从 app.use('/' ...) 路由器。控制台返回以下错误:

Resource interpreted as Stylesheet but transferred with MIME type text/html: "https://xxx.co.uk/core/styles/m.css".

我通过将主页更改为我的联系页面来对此进行试验,这导致每个 URL 都返回联系页面。我的 CSS 和 JavaScript 位于 public 文件夹中。我唯一能想到的是“/”路由以某种方式用于每个请求,但我不明白为什么会发生这种情况。

最佳答案

而不是使用 app.use('/<route>', <router>)在您的项目中,尝试将其替换为相应的 express 语句,例如,

router.<route_method>('/<route>', function(req, res, next){
// code
});

看看它是否正常工作。

关于node.js - 所有页面返回与 OVH Cloud Hosting 相同的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52127806/

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