【发布时间】:2020-12-12 14:52:29
【问题描述】:
我已经尝试了几个小时将基于链接的 pdf.js 替换为 pdfjs-dist 的 npm 安装,因为我注意到我的链接不打算用作 cdns,并且可能会变得不稳定,因为 @987654321 @。
在exchanging several messages 与从事 pdf.js 工作的人之一之后,似乎我的编译错误可能是由于 Webpack 在内部处理库的方式。这是我所看到的:
WARNING in ./node_modules/worker-loader/dist/index.js
Module not found: Error: Can't resolve 'webpack/lib/web/FetchCompileAsyncWasmPlugin' in '/home/giampaolo/dev/KJ_import/KJ-JS/node_modules/worker-loader/dist'
@ ./node_modules/worker-loader/dist/index.js
@ ./node_modules/worker-loader/dist/cjs.js
@ ./node_modules/pdfjs-dist/webpack.js
@ ./src/js/views/pdfViews.js
@ ./src/js/index.js
WARNING in ./node_modules/worker-loader/dist/index.js
Module not found: Error: Can't resolve 'webpack/lib/web/FetchCompileWasmPlugin' in '/home/giampaolo/dev/KJ_import/KJ-JS/node_modules/worker-loader/dist'
@ ./node_modules/worker-loader/dist/index.js
@ ./node_modules/worker-loader/dist/cjs.js
@ ./node_modules/pdfjs-dist/webpack.js
@ ./src/js/views/pdfViews.js
@ ./src/js/index.js
ERROR in (webpack)/lib/node/NodeTargetPlugin.js
Module not found: Error: Can't resolve 'module' in '/home/giampaolo/dev/KJ_import/KJ-JS/node_modules/webpack/lib/node'
@ (webpack)/lib/node/NodeTargetPlugin.js 11:1-18
@ ./node_modules/worker-loader/dist/index.js
@ ./node_modules/worker-loader/dist/cjs.js
@ ./node_modules/pdfjs-dist/webpack.js
@ ./src/js/views/pdfViews.js
@ ./src/js/index.js
Child HtmlWebpackCompiler:
1 asset
Entrypoint HtmlWebpackPlugin_0 = __child-HtmlWebpackPlugin_0
[./node_modules/html-webpack-plugin/lib/loader.js!./src/src-select.html] 4.57 KiB {HtmlWebpackPlugin_0} [built]
Child worker-loader node_modules/pdfjs-dist/build/pdf.worker.js:
Asset Size Chunks Chunk Names
index.worker.js 1.33 MiB pdf.worker [emitted] pdf.worker
Entrypoint pdf.worker = index.worker.js
[./node_modules/pdfjs-dist/build/pdf.worker.js] 1.25 MiB {pdf.worker} [built]
[./node_modules/process/browser.js] 5.29 KiB {pdf.worker} [built]
ℹ 「wdm」: Failed to compile.
理论上pdfjs-dist 应该带有一个零配置文件,甚至不需要为它设置一个工作器,所以像下面这样的代码应该工作:
import pdfjsLib from 'pdfjs-dist/webpack'
////////////////////////////////////////////
//// instantiate pdf
export const pdfView = () => {
// pdfjsLib.GlobalWorkerOptions.workerSrc = 'index.worker.js';
// var defined through a Django template tag
const loadingTask = pdfjsLib.getDocument(pdfData.myPdfDoc)
pdfData.myPdf = loadingTask.promise.then(pdf => {
pdfData.pdfTotalPageN = pdf.numPages;
return pdf;
})
}
但它没有被编译,我真的很感激一些指针。 提前致谢
【问题讨论】:
-
你好,我也有同样的问题,你最后做了什么?
-
到目前为止,我仍然使用 CDN 方法。我很想在 Webpack 中打开一个问题,因为 Mozilla 的人很有帮助,但指出了 WP 中的一个内部错误。我已经在 WP 的 gitter 聊天 (gitter.im/webpack/webpack) 中寻求反馈,但没有运气...
-
更新:我终于按照@Siddhesh 选择的答案安装了它。我的代码需要的唯一修改是使用
import * as pdfjsLib from 'pdfjs-dist/webpack'而不是import pdfjsLib from 'pdfjs-dist/webpack'导入 -
Aaaand... 经过几天的工作和 Webpack 更新(从 wp4 到 wp5)
pdfjs-dist再次崩溃。半天没弄明白。我回到了CDN。html中带有 pdf.min.js 链接的简单<script>,在调用pdfjsLib(const loadingTask = pdfjsLib.getDocument(pdfData.myPdfDoc)) 和loadingTask承诺之前的代码中的pdfjsLib.GlobalWorkerOptions.workerSrc = "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/[same_version!]/pdf.worker.min.js",没有其他导入。轻松一点。
标签: javascript django npm webpack pdfjs-dist