微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 使用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));

然后代替那些网址:

> 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

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

> How to serve an image using nodejs
> Failed to load resource from same directory when redirecting Javascript
> onload js call not working with node
> Loading partials fails on the server JS
> Node JS not serving the static image

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐