Как отправить двоичный файл / файл wasm из NestJs - PullRequest
0 голосов
/ 13 октября 2019

Я попытался отправить файл WebAssambly с моим бэкэндом NestJs следующим образом

@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);
    });
}

Однако в браузере я вижу следующую ошибку

enter image description here

Но когда я обслуживаю файл следующим образом

@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);
    });
});

И здесь он работает как шарм

1 Ответ

1 голос
/ 14 октября 2019

Модуль WebAssembly, отправленный в браузер, поврежден. Вы уверены, что код в первом случае правильный? Попробуйте сначала отправить простой текстовый файл. Также вы должны проверить объект ошибки перед отправкой ответа.

...