你如何从server / app.js提供client / index.html?

时间:2015-07-18 21:18:39

标签: javascript node.js express

我的文件结构:

- simulated-selves
  - client
    - index.html
  - server
    - app.js

我尝试在用户点击index.html路径时发送/

// server/app.js

app.get('/', function(req, res) {
  res.sendFile(__dirname + '/../client/index.html', null, function(err) {
    if (err) {
      console.log('error: ', err);
      res.status(err.status).end();
    }
    else res.status(200).end();
  });
});

虽然它不起作用。这是注销的错误:

error:  { [Error: Forbidden] status: 403 }

所以基本上我可以访问__dirname中的app.js。由于app.js位于server文件夹中,__dirname会解析为/Users/azerner/code/simulated-selves/server。由于我需要访问index.html文件夹中的client,我需要操纵我拥有的__dirname。我知道我可以做一些字符串操作,但我正在寻找最好的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

有一个节点内置模块可以处理解析路径,这可能会帮助您解决此问题

函数path.resolve将处理相对部分(/../)并为您构建绝对路径。

例如:

var path = require('path');
var clientFile = path.resolve(__dirname + '/../client/index.html');

查看路径http://devdocs.io/node/path#path_path_resolve_from_to

上的文档的更多信息