【问题标题】:Page don't work when I set the error404 handler (app.get('*', ......))当我设置 error404 处理程序时页面不起作用(app.get('*',......))
【发布时间】:2017-04-15 03:43:52
【问题描述】:

我正在尝试设置 error404 处理程序。正如我在这里看到的,我应该在其余路由的最后设置 error404.jade 页面的“*”路径。

这样做时,页面不会加载图像、css 或 javascript 文件。这对我来说没有意义。

app.ts

import express = require('express');
import routes = require('./routes/index');
import http = require('http');
import path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);

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

// development only
if ('development' == app.get('env')) {
    app.use(express.errorHandler());
}

app.get('/', routes.login);
app.get('/home', routes.home);
app.get('/markets', routes.markets);
app.get('/market/*', routes.specific_market);
app.get('/trades', routes.trades);
app.get('/about', routes.about);
app.get('/contact', routes.contact);
//app.get('*', routes.error404);

http.createServer(app).listen(app.get('port'), function () {
    console.log('Express server listening on port ' + app.get('port'));
});

index.ts

/*
 * GET home page.  
 */
import express = require('express');
import market_routes = require('./market-routes');
import trade_routes = require('./trade-routes');
import data = require('../Scripts/data-test');

// STATIC PAGES
export function login(req: express.Request, res: express.Response) {
    res.render('login', { title: 'Login', user, year: new Date().getFullYear() });
};
export function about(req: express.Request, res: express.Response) {
    res.render('about', { title: 'About', user, year: new Date().getFullYear(), message: 'Description page' });
};
export function contact(req: express.Request, res: express.Response) {
    res.render('contact', { title: 'Contact', user, year: new Date().getFullYear(), message: 'Contact page' });
};
export function error404(req: express.Request, res: express.Response) {
    res.render('error404', { title: 'Not Found', user, year: new Date().getFullYear(), message: 'Error page' });
};

var user = data.user;

export function home(req: express.Request, res: express.Response) {
    res.render('home', { title: 'Home', user, year: new Date().getFullYear() });
};

export function markets(req: express.Request, res: express.Response) { market_routes.markets(req, res); };
export function specific_market(req: express.Request, res: express.Response) { market_routes.specific_market(req, res); };

export function trades(req: express.Request, res: express.Response) { trade_routes.trades(req, res); };
export function advanced_trades(req: express.Request, res: express.Response) { trade_routes.advanced_trades(req, res); };

(img) Page with the line 'uncommented'

(img) Page with the line 'commented'

【问题讨论】:

  • 找不到您的静态数据。尝试使用没有'*' 的死记硬背,只需app.use(routes.error404);
  • @JohannesMerz YEES!!!这样可行!非常感谢
  • 我创建了一个官方答案,以便其他人可以看到。

标签: node.js express routing routes url-routing


【解决方案1】:

找不到您的静态数据。使用没有'*'的路由:

app.use(routes.error404);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    相关资源
    最近更新 更多