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

How do you serve client/index.html from server/app.js?

本文关键字:client index html 提供 app server js      更新时间:2023-09-26

我的文件结构:

- 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 }

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

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

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

例如:

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

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

上的文档中的更多信息