我有一个仅在本地计算机上运行的实验:例如,我加载外部网页https://example.com
和 puppeteer 我注入一个 javascript 文件,该文件由http://localhost:5000
.
到目前为止还没有问题。但是,这个注入的 javascript 文件加载了 WebAssembly 文件,然后出现以下错误
Uncaught (in promise) ReferenceError: SharedArrayBuffer is not defined
....
事实上,SharedArrayBuffer 没有定义(Chrome v96),结果是我的代码根本无法工作(虽然它曾经工作过)。所以我的问题是,我该如何解决这个错误?
阅读有关此内容的更多信息,似乎您可以添加两个标头
res.setHeader('Cross-Origin-Opener-Policy', 'same-origin');
res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp');
我对这两个文件都做了这件事,但没有取得太大成功。考虑到该页面与注入的 js 和 WASM 文件来自不同的域,这可能不起作用。
但也许还有其他可能的解决方案。这是我启动 chrome 的命令
client.browser = await puppeteer.launch({
headless: false,
devtools: true,
defaultViewport: null,
executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
args: [
'--debug-devtools',
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-web-security',
'--allow-running-insecure-content',
'--disable-notifications',
'--window-size=1920,1080'
]
//slowMo: 500
});
我知道 chrome 有太多选项,所以也许还有一个选项可以解决这个 SharedArrayBuffer 问题?
希望有人知道这是如何工作的并可以帮助我,非常感谢!