0

简而言之:当我访问时,我怎样才能得到st服务?index.html/

我在 Express 中使用st 模块(或 Connect,没关系)。这是我的全部代码:

var st = require('st');
var path = require('path');
var connect = require('connect');

var app = connect();

app.use(st({
  url: '/',
  path: path.resolve(__dirname, 'public'),
  index: 'index.html', // !!! PROBLEM LINE !!!
  cache: false,
  passthrough: true
}));

app.use(function(req, res) {
  res.end('This is not served from the st module.');
});

app.listen(8000, function() { console.log('App started.'); });

当我访问时localhost:8000/index.html,我看到了文件。当我访问时localhost:8000/,我没有看到索引 HTML。

我已经尝试了以下index选项,但没有运气:

  • index: false
  • index: true
  • index: 'index.html'
  • index: 'public/index.html'
  • index: path.resolve(__dirname, 'public/index.html')

当我访问时,我怎样才能得到st服务?index.html/

4

3 回答 3

0

将您index.html的目录移至公共目录。因为st处理请求如下:

 if (u.indexOf(this.url) !== 0) return false

这意味着您当前访问的 URL 必须是.url设置的选项的子 URL app.use()

在此示例中,您将映射'/public''/'。因此,public/index.html除非您public在原始文件夹下创建另一个名为的public文件夹并将index.html

你不能使用../index.html任何一个,因为st不允许这样做(你正在访问一个取消映射文件!),你会得到一个403错误。

如果仍然失败,请尝试其他 Web 浏览器。一旦我在Chrome上尝试一切正常,但在Firefox上失败。这可能是由缓存选项引起的。

于 2014-07-07T08:56:34.570 回答
0

我实现了重定向,例如:

routes['/'] = function(req, res) {
    res.redirect('/index.html');
};

它有效!

于 2014-02-25T12:54:16.983 回答
0

这个:

st({ 
    path: __dirname + "/web", 
    url:"/", 
    index: "/index.html" 
});

为我工作。但我必须先清除浏览器缓存。

于 2014-08-31T19:10:08.600 回答