我正在尝试从Amazon-S3上的存储桶中提供PDF文件,在浏览器中使用PDF.js。我已经在S3中修改了相关的CORS政策。但是,我在浏览器中收到以下错误消息:
PDF.js v2.2.71 (build: 80135378)
Message: file origin does not match viewer's
经过搜索,我发现了几个相关的问题,比如这里的这个问题,因为这似乎是一个相对常见的问题。因此,很明显,我需要允许Amazon S3作为主机源。因此,我修改我的viewer.js
文件以包含主机,如下所示:
var HOSTED_VIEWER_ORIGINS = ['null',
'http://mozilla.github.io',
'https://mozilla.github.io',
'https://thepdfbucket.s3.eu-west-
2.amazonaws.com'];
但是,如果我执行硬重新加载并检查源,我可以看到在webpack:///web/app.js
中抛出错误:
Uncaught (in promise) Error: file origin does not match viewer's
at validateFileURL (app.js:1482)
at webViewerInitialized (app.js:1541)
如果我检查app.js
,我可以看到HOSTED_VIEWER_ORIGINS
数组,从viewer.js
文件映射。但是,它不包括修改后的数组,即我添加的https://thepdfbucket.s3.eu-west-2.amazonaws.com
。
我不能让这个工作。我相信我可能有一个缓存问题,但是,我已经清除了所有浏览器的缓存,我甚至从github
重新构建了PDF.js
,并试图修改viewer.js
文件,在编译之前。
如果我修改了viewer.js
文件,并且app.js
是从viewer.js
映射的,但它没有反映最近的更改,我的结论是它必须使用缓存文件。我如何清除这个缓存,并得到app.js
来反映我所做的更改?
我真的很感激你的帮助,因为我昨天花了一整天的时间在这个问题上,我不明白这些是如何联系在一起的。
许多谢谢。
我也遇到了这个问题并进行了调查。PDF.js版本:pdfjs-3.3.122
原因是在浏览器中调试时,调试信息来自于viewer.js.map,而不是实际工作的viewer.js源代码。
最快的调试方法是删除view .js.map.
错误的原因可能是错误指定的值。我就是这样。
错误:https://google.com/正确:https://google.com
用www.DeepL.com/Translator(免费版)翻译