Javascript 从express中的routes文件夹访问公共静态文件

Javascript 从express中的routes文件夹访问公共静态文件,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试从公用文件夹访问静态“home.html”文件。该应用程序的体系结构是: 公开的 home.html 路线 index.js 观点 myapp.js myapp.js: var express = require('express'); var path = require('path'); var routes = require('./routes/index'); var app = express(); app.set('views', path.join(_

我正在尝试从公用文件夹访问静态“home.html”文件。该应用程序的体系结构是:

  • 公开的
    • home.html
  • 路线
    • index.js
  • 观点
  • myapp.js
myapp.js:

var express = require('express');
var path = require('path');

var routes = require('./routes/index');

var app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

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

app.use('/', routes);
index.js:

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

router.get('/', function(req, res, next) {
    res.render('index', { title: 'Express' });
});

router.get('/about', function(req, res, next){
    res.sendFile(__dirname + '/home.html');
});

module.exports = router;

我遇到的主要问题是无法加载位于“/about”的home.html文件。index.js中的“_dirname”指向routes文件夹,我尝试连接“/../”以向上移动一个目录,但我刚刚得到一个403禁止的错误。我想我可以将home.html文件放在routes目录中,但我真的想知道如何解决根本问题。当然,从位于“/”的视图文件夹渲染jade文件的效果非常好。提前感谢您的帮助和专业知识。

您试图以错误的方式使用它。出现禁止错误的原因是,客户端不应能够访问所选静态文件夹之外的文件夹

您可以选择多个静态目录,如

尽管我建议您将所有公开可用的文件放在同一个目录中