Webpack(结合Angular)不打包new Worker(),遇跨源访问错误求助
Angular项目中Webpack 5未处理pdfjs-dist v3的new Worker()代码问题
问题背景
- 将pdfjs-dist从v2升级到v3后,加载Worker的Webpack集成方式改为Webpack 5官方支持的
new Worker()语法(原使用worker-loader可正常运行) - 库中相关代码如下:
pdfjs.GlobalWorkerOptions.workerPort = new Worker( new URL("./build/pdf.worker.js", import.meta.url) );
- 在项目中手动测试相同逻辑时,出现以下跨源错误:
Uncaught DOMException: Failed to construct 'Worker': Script at 'file:///myprojectpath/node_modules/pdfjs-dist/build/pdf.worker.js' cannot be accessed from origin 'http://localhost:9003'.
排查情况
- Webpack未对上述
new Worker()代码进行打包或转换,import.meta.url指向本地绝对路径,也未生成对应的Worker代码块 - 怀疑是Angular自定义的WebWorker处理机制导致该问题,但尚未确认具体原因
- 参考过非Angular场景的同类问题,已确认Angular生成的Webpack配置中
output.publicPath值为'',符合该场景下的解决方案要求
疑问
为何Webpack会忽略new Worker()代码?这是Angular的问题吗?
内容的提问来源于stack exchange,提问作者Morgan Touverey Quilling
相关产品推荐
相关产品推荐

