正在访问另一个子文件夹 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
我的文件夹层次结构如下;
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