【问题标题】:How to send a binary/wasm file from NestJs如何从 NestJs 发送二进制/wasm 文件
【发布时间】:2020-02-10 11:01:06
【问题描述】:

我尝试使用我的 NestJs 后端发送一个 WebAssambly 文件,如下所示

@Get('wasm')
private getWasm(req: Request, res: Response) {
    fs.readFile('barfoo.wasm', 'binary', (err: any, data: Buffer) => {
        res.setHeader('Content-Type', 'application/wasm');
        res.status(200).end(data);
    });
}

但是,在浏览器中我看到以下错误

但是当我按如下方式提供文件时

@Get('wasm')
private getWasm(req: Request, res: Response) {
    res.sendFile(path.join(__dirname, '../../../barfoo.wasm'));
}

一切正常。

所以我的问题是,为什么我的第一个示例不起作用?

更新:我已将代码提取到一个非常基本的快速服务器中

app.get('*', (req, res) => {
    const file = (req.url.length > 1 ? req.url : 'index.html').replace(/^\//, '');
    console.log(`loading file ${file} for url ${req.url}`);
    fs.readFile(`./${file}`,(err, data) => {
        res.writeHead(200, {'Content-Type': mime.lookup(file)});
        res.status(200).end(data);
    });
});

在这里它就像一个魅力

【问题讨论】:

    标签: javascript express binary nestjs webassembly


    【解决方案1】:

    发送到浏览器的 WebAssembly 模块已损坏。您确定第一种情况下的代码是正确的吗?尝试先提供一个简单的文本文件。此外,您应该在发送响应之前检查错误对象。

    【讨论】:

    • 我已经用我的最新发现更新了这个问题。它似乎在正常的基本快速设置中工作。我注意到我不仅在使用 NestJs,而且还在使用 @overnightjs/core。待续
    猜你喜欢
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2016-06-07
    相关资源
    最近更新 更多