正在访问另一个子文件夹 express.js 中的 html 文件

Reaching html file in another subfolder express.js

我的文件夹层次结构如下;

public

----index.html

----server.js

当我运行代码

var express = require('express');
var app = express();
var serv = require('http').Server(app);
var net = require('net');
var path = require('path');
var port = 3000;

app.use('/../public/', express.static(path.join(__dirname + '/../public/')));

app.get('/', function(req,res){
    res.sendFile(__dirname + '/../public/index.html');
});

serv.listen(3000, function(){
    console.log('port ' + port + ' is started to being listened')
});

var io = require('socket.io')(serv,{});

它returns 禁止的错误。如何访问另一个子文件中的文件?


首先,我认为解决了它实际上并没有解决,因为我运行宁多个项目来了解基础知识,我很困惑。但现在一切都清楚了。我实际上想做的是尝试使用 express 将所有内容划分到文件夹中。由于对http了解不多,所以看了很多视频,最后在youtube上看了express官方介绍视频才搞明白。

这里又是我想要完成的事情;

-本地主机 --public ---index.html --src ---所有服务器js文件和其他涉及游戏编程的文件。

当我试图到达上面时,我无法做到。真正起作用的是;

创建一个指定 'public' 目录的变量,该目录是本地主机下的另一个子目录,并将其用作静态,这从一开始就很简单,但由于我不太了解,所以我无法使用在学习了一些教程之后。正如迈克尔上面提到的,我什至不需要以下几行;

    app.get(publicDir, function(req, res){
         res.sendFile('index.html');
    })

我所做的只是;

 
 var publicDir = require('path').join(__dirname, '/../public');

 app.use(express.static(publicDir));

app.use('/../public/' 

确实没有意义。此参数表示请求 URL。您无法侦听位于其他地方但不在根文件夹内的层次结构中的请求 URL。

请记住,app.use('/' 等于请求 URL,如 http://localhost:3000 - 这意味着这是网站的绝对基础 - 即所谓的根。那么 '/../public' 应该指向哪里呢?没有 URL 可以到达这样的地址。

如果你写 app.use('/public' 它会监听 http://localhost:3000/public

上的请求

但是您当然可以像您一样发送位于文件结构中的文件。所以可能你想要的是:

app.use(express.static(__dirname + '/../public'));

为了在如下文件夹结构中搜索静态文件:

public
 -styles.css
 -script.js
 -index.html
server
 -currentscript.js

在那里你可以访问像 http://localhost:3000/styles.css

这样的静态文件

你也可以完全删除这个控制器:

app.get('/', function(req,res){
    res.sendFile(__dirname + '/../public/index.html');
});

像HTML这样的静态文件已经由上面提到的 Express 静态文件控制器提供。 这足以通过调用 http://localhost:3000

访问您的 index.html