gpt4 book ai didi

javascript - 使用 express 将整个文件夹内容发送给客户

转载 作者:搜寻专家 更新时间:2023-10-31 23:37:26 25 4
gpt4 key购买 nike

我制作了一个 html5 游戏(使用 GameMaker),它由一个 index.html 和一个文件夹“html5game”组成,其中包含游戏的依赖项 - javascript 代码和资源。问题是资源非常多且各不相同(声音、 Sprite 等),客户需要所有这些资源来播放。

我正在寻找一种无需特别命名即可将它们全部发送的方法。

我尝试了 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 目录放入某个公共(public)目录,例如称为 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):

当然,您仍然需要确保在 index.html 文件中正确引用您的 Assets ,例如:

<script src="/html5game/xxx.js"></script>

在上面的示例布局中。

包含静态 Assets 的顶级目录(您有 index.html)通常称为 staticpublichtml 但您可以随意调用它,只要您在调用 express.static() 时使用正确的路径即可。

如果你想让你的游戏在根路径以外的其他路径中可用,那么你可以将它指定为 app.use。例如,如果你改变这个:

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

为此:

app.use('/game', express.static(htmlPath));

然后代替那些 URL:

这些 URL 将可用:

这里的很多问题都与使用 Express 提供静态文件有关,所以我做了一个工作示例并将其发布在 GitHub 上,以便人们可以有一个工作起点并从那里开始:

另请参阅我更详细地讨论它的其他一些答案:

关于javascript - 使用 express 将整个文件夹内容发送给客户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40509666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com