javascript - Nodejs 和 express 无法定位资源文件(CSS & JS 文件)

标签 javascript node.js express

我正在尝试使用 express 构建一个简单的网站。 一切正常,直到我决定添加下面的代码来捕获 404 错误

app.get('/*', function(req, res) {
 res.render('404.ejs',{
        title: 'PAGE NOT FOUND',
        layout:'layout'})
});

之后,注意所有内部 CSS 文件和 JavaScript 资源文件,无法正确加载,我想是因为那些 CSS 和 JavaScript 文件引用链接不在路由配置中。这就是为什么所有到页面的路径都没有找到的原因/*

所以只是想知道,什么是正确的方法,我可以捕获 404 错误并显示我自己的自定义页面,并且不影响所有资源文件加载。谢谢!

最佳答案

如果您使用的是 express,则应该使用错误处理中间件,例如这些示例:

// Routing and public files
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// Error-handling middleware
app.use(function(err, req, res, next) {
  // Parse error

  // Ex. if error = 500, render 500.jade page

  // At the end
  next(err);
});

// This is called on any page not in router.
app.use(function(req, res, next) {
  res.status(404);

  // respond with html page
  if (req.accepts('html')) {
    res.render('error/404', { title: '404 Error.' });
    return;
  }

  // respond with json
  if (req.accepts('json')) {
    res.send({ error: 'Not found' });
    return;
  }

  // default to plain-text. send()
  res.type('txt').send('Not found');
});

引用this有关 Express 错误处理的更多信息。

关于javascript - Nodejs 和 express 无法定位资源文件(CSS & JS 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20371933/

相关文章:

node.js - Node.js 中的 fs.ReadStream 和 fs.createReadStream 有区别吗?

node.js - 在 axios.delete() 上获取 404(未找到)

javascript - 有没有办法在 find 方法中使用 OR ?

javascript - 启用探查器后 IE11 Javascript 更快

javascript - 在开始使用 javascript 时加载 javascript 函数

node.js - Mocha : skip tests in nested describes

javascript - Node.js 网络库 : getting complete data from 'data' event

javascript - 对象数组的 Graphql 输入类型

Javascript:按数组过滤对象

javascript - 通过 Bootstrap 加载/重置后更改按钮文本