【问题标题】:How to point Node server to serve an index file 1 path up?如何指向节点服务器以提供索引文件 1 路径?
【发布时间】:2017-07-15 19:12:24
【问题描述】:

这是我的文件夹结构:

我在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'

所以错误消息告诉我我需要再上 1 个文件夹,所以想出如下内容:

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

但是现在我收到了一个禁止错误:

ForbiddenError: 禁止

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    您收到 Forbidden 错误的原因是因为 Node.js 找到了相对路径 ../ 恶意(例如,如果您根据用户输入获取文件,他可能会尝试访问您不使用的文件系统上的文件'不想让他访问)。

    所以你应该使用path 模块,就像this 问题中指出的那样

    您的代码应该使用如下路径:

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

    【讨论】:

    • 谢谢! :D 我不得不稍微调整一下我的路径'/../index.html' 但它现在可以工作了!呵呵,它正在为我的索引文件提供服务,但没有运行 Angular 应用程序。所以下一步就是弄清楚...
    • 很高兴您取得了进展,请务必标记其中一个答案,以便用户将来可以轻松使用您的问题:)
    【解决方案2】:

    我之前遇到过类似的平均堆栈问题。

    Mor Paz 上面的答案应该有效。 :)

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-22
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      相关资源
      最近更新 更多