使用Express将整个文件夹内容发送到客户端
我制作了一个html5游戏(使用GameMaker),该游戏由index.html和一个文件夹“ html5game”组成,该文件夹包含游戏的依赖项-
javascript代码和资源。问题在于资源非常丰富多样(声音,子画面等),客户需要它们全部发挥作用。
我正在寻找一种无需全部命名就可以全部发送邮件的方法。
我尝试了glob模块:
var glob = require( 'glob' );var files = glob.sync( './html5game/**' ).forEach( function( file ) {
require( path.resolve( file ) );
});
但是一旦完成,我就找不到使用res.sendFile()发送文件的方法。
我试过了
var express = require('express');var app = express();
[...]
app.get('/aeronavale/jeu', function(req, res){
res.sendFile(__dirname + '/aeronavale/index.html');
res.sendFile(files)
});
[...]
app.listen(3000, function(){
console.log('app started on port 3000, yeah !')
})
但这给了我错误:
TypeError: path argument is required to res.sendFile
如果您有其他解决方案,我也很感兴趣。感谢您的回答!
回答:
您将无法使用发送多个文件res.sendFile
。您可以在此处执行的最直接的操作是:
将您的index.html
文件和html5game
目录放入某个通用目录,例如html
,并将其放在您的Node.js程序所在的位置。目录布局的示例为:
/home/you/yourapp:- app.js (your node program)
- package.json (your package.json etc)
- html (a new directory)
- index.html (your main html to serve)
- html5game (the directory with other files)
- (other files)
现在,在您的Node程序中,您可以使用如下代码:
var path = require('path');var express = require('express');
var app = express();
var htmlPath = path.join(__dirname, 'html');
app.use(express.static(htmlPath));
var server = app.listen(3000, function () {
var host = 'localhost';
var port = server.address().port;
console.log('listening on http://'+host+':'+port+'/');
});
这将index.html
在以下地址上提供您所有文件(包括)的地址:
- http:// localhost:3000 /(您的
index.html
) - http:// localhost:3000 / html5game / xxx.js(您的资产)
当然,您仍然需要确保index.html
正确引用文件中的资产,例如:
<script src="/html5game/xxx.js"></script>
在上述示例布局的情况下。
index.html
通常会调用包含您的静态资产(您拥有)的顶层目录static
,public
或者html
,只要您在调用中使用正确的路径,就可以随意调用它express.static()
。
如果您想在根目录路径以外的其他路径中使用游戏,则可以将其指定为app.use
。例如,如果您更改此设置:
app.use(express.static(htmlPath));
对此:
app.use('/game', express.static(htmlPath));
然后代替这些URL:
- http:// localhost:3000 /(您的
index.html
) - http:// localhost:3000 / html5game / xxx.js(您的资产)
这些网址将改为可用:
- http:// localhost:3000 / game /(您的
index.html
) - http:// localhost:3000 / game / html5game / xxx.js(您的资产)
这里有很多问题与使用Express提供静态文件有关,因此我制作了一个工作示例并将其发布在GitHub上,以便人们可以有一个工作的起点并从那里开始:
- https://github.com/rsp/node-express-static-example
以上是 使用Express将整个文件夹内容发送到客户端 的全部内容, 来源链接: utcz.com/qa/408878.html