emscripten-core/emscripten

"SyntaxError: Unexpected token < in JSON at position 0" on source map load failure

Open

#13,136 建立於 2020年12月29日

在 GitHub 查看
 (4 留言) (0 反應) (0 負責人)C++ (3,519 fork)batch import
help wanted

倉庫指標

Star
 (27,361 star)
PR 合併指標
 (平均合併 19天 10小時) (30 天內合併 147 個 PR)

描述

When the code is built with -g4 but the resulting .map file is unavailable at the page load time, the code fails with a bit mysterious error:

SyntaxError: Unexpected token < in JSON at position 0
printErr @ a.out.html:1246
abort @ a.out.js:1273
getSourceMap @ a.out.js:1444
(anonymous) @ a.out.js:1455
Promise.catch (async)
getSourceMapPromise @ a.out.js:1454
createWasm @ a.out.js:1668
(anonymous) @ a.out.js:7682

The stack trace points to the getSourceMap() function (https://github.com/emscripten-core/emscripten/blob/9bb322f8a7ee89d6ac67e828b9c7a7022ddf8de2/src/source_map_support.js#L105). Neither this function nor the read_() function (https://github.com/emscripten-core/emscripten/blob/9bb322f8a7ee89d6ac67e828b9c7a7022ddf8de2/src/web_or_worker_shell_read.js#L7) it calls have the error handling code. So when the source map loading fails with a 404 error and some non-empty HTML body, this code tries to parse this 404 error page as a JSON dump and therefore fails with this SyntaxError.

貢獻者指南