Angular+esbuild使用file loader导入JS文件获URL失败求助
Angular + esbuild 中使用 import attributes 导入JS文件为URL失败的问题
在搭配esbuild使用Angular时,借助angular-loader-import-attributes插件,可通过import attributes指定loader将资源导入为文件URL,例如:
import userImageURL from 'user.svg' with { loader: 'file' };
这种方式能正常获取到图片的URL。
现在需要给第三方库提供Web Worker的JS文件URL,我尝试用同样逻辑导入目标JS文件:
import imageCompressionWorkerURL from 'browser-image-compression/dist/browser-image-compression.js' with { loader: 'file' };
但实际得到的始终是该JS文件的默认导出模块,而非预期的文件URL。
我知道可以通过以下方式创建Worker:
const worker = new SharedWorker(new URL('some-worker', import.meta.url), { type: 'module' });
但目标第三方库只需要传入Worker文件的URL即可。目前我只能手动将该JS文件复制到输出目录,使用固定URL,但这种方式存在缓存问题,无法实现内容哈希来做缓存击穿。
另外,在Webpack环境中,我可以通过以下写法强制使用file-loader,抵消其他loader的影响:
import imageCompressionWorkerURL from '!file-loader!browser-image-compression/dist/browser-image-compression.js';
请问在Angular+esbuild的场景下,我哪里操作有误?
内容的提问来源于stack exchange,提问作者norekhov
相关产品推荐
相关产品推荐

