Ошибка при загрузке файла WebAssembly из серверной части NestJs - PullRequest
0 голосов
/ 12 октября 2019

Я пытаюсь загрузить файл WebAssembly в браузер. Я пытаюсь загрузить эту библиотеку, и когда я пытаюсь сделать то, что описано, я получаю ошибку

const worker = new Worker('http://localhost:3000/webworker-wasm')
VM114:1 Refused to create a worker from 'http://localhost:3000/webworker-wasm' because it violates the following Content Security Policy directive: "default-src 'none'". Note that 'worker-src' was not explicitly set, so 'default-src' is used as a fallback.  

Так что я предполагаю, что это связано с тем, как я обслуживаю этот файл. У меня есть NestJS бэкэнд, и код, обслуживающий этот файл, выглядит как

@Get('webworker-wasm')
private getWebworkerWasm(req: Request, res: Response) {
    fs.readFile('./node_modules/stockfish.js/stockfish.wasm.js', (err: any, data: Buffer) => {
        res.writeHead(200, {'Content-Type': 'application/wasm'});
        res.status(200).end(data);
    });
}

Есть ли в этой настройке что-то неправильное или я что-то забыл?

ОБНОВЛЕНИЕ: Я немного изменил код, и теперь ошибка немного отличается

   fs.readFile('./node_modules/stockfish.js/stockfish.wasm.js', 'binary', (err: any, data: Buffer) => {
        res.setHeader('Access-Control-Allow-Origin', '*');
        res.setHeader('Access-Control-Request-Method', '*');
        res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET');
        res.setHeader('Access-Control-Allow-Headers', '*');
        res.setHeader('Content-Type', 'application/wasm');

        // res.writeHead(200, {'Content-Type': 'application/wasm'});
        res.status(200).end(data);
    });

дает:

x = new Worker('http://localhost:3000/files/webworker-wasm');
VM48:1 Uncaught DOMException: Failed to construct 'Worker': Script at 'http://localhost:3000/files/webworker-wasm' cannot be accessed from origin 'chrome-search://local-ntp'.
at <anonymous>:1:5

В моем случае все нормально, если я могу исправить это с помощьюнастройка хрома!

1 Ответ

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

Я не могу добавить комментарий, поэтому я публикую его как ответ.

Пожалуйста, опубликуйте все заголовки ответа, как показано в браузере.

Кроме того, вы обслуживаетеФайл JavaScript в виде WebAssembly, application/wasm должен быть application/javascript.

...