在快速

时间:2015-10-11 16:07:03

标签: 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(__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 Forbidden Error。我想我可以将home.html文件放在routes目录中,但我真的想弄清楚如何解决底层问题。当然,从'/'的views文件夹中渲染jade文件非常合适。提前感谢您的帮助和专业知识。

1 个答案:

答案 0 :(得分:2)

您正试图以错误的方式使用它。您收到禁用错误的原因是客户端无法访问您选择的静态文件夹之外的文件夹。

您可以做的是选择多个静态目录,例如Setting up two different static directories in node.js Express framework

虽然我建议您只将所有可公开提供的文件放在同一目录中。