如何指向节点服务器为索引文件提供1个path?

这是我的文件夹结构:

我有src文件夹里面的所有东西, src/index.html也是我想要指出的。 而我的节点服务器文件在src/server/server.js

在这里输入图像描述

当我运行正确的node src/server/server命令我得到以下错误:

 const express = require('express'); const app = express(); app.get('/', (req, res) => { res.sendFile('index.html', { root: __dirname }); }); app.get('/category', (req, res) => { res.end('Categories'); }); app.listen(8999, (res) => { console.log(res); }); 

错误:ENOENT:没有这样的文件或目录,stat'/Users/leongaban/Projects/CompanyName/appName/src/server/index.html'

所以错误信息是告诉我我需要去更多的文件夹,所以计算如下:

 app.get('/', (req, res) => { res.sendFile('../index.html', { root: __dirname }); }); 

但是现在我得到一个禁止的错误:

ForbiddenError:禁止

你得到一个Forbidden错误的原因是因为Node.js发现相对path../恶意(例如,如果你得到一个基于用户input的文件,他可能会尝试访问你不希望他的文件系统上的文件访问)。

所以相反,你应该使用这个问题中指出的path模块

你的代码应该像这样使用path:

 var path = require('path'); res.sendFile(path.resolve(__dirname + '../index.html')); 

我有一个类似的问题,早期的平均堆栈问题。

Mor Paz'上面的答案应该可以工作。 🙂

只是为了贡献,我做了以下。

 var path = require('path'); app.use(express.static(path.join(__dirname, 'public'))); app.get('/', function(req, res){ res.sendFile('../index.html'); });