今天在使用pdfjs库的时候,总是报错window is not defined, 几番查找资料并尝试后发现是webpack的问题,webpack打包有个配置项: output.globalObject 配置为"this" 即可避免该错误,该配置默认为"window", 然而webworker 中没有window对象,所以会报错。webpack 加载pdfjs 显示pdf文件的代码如下:
import pdfjsLib from "pdfjs-dist/webpack"; pdfjsLib.getDocument(this.pdf).then(function(doc) { doc.getPage(pageNumber).then(function(page) { var scale = 1.5; var viewport = page.getViewport(scale); var context = canvas.getContext("2d"); canvas.height = viewport.height; canvas.width = viewport.width; var renderContext = { canvasContext: context, viewport: viewport }; page.render(renderContext); }); });正确的配置(部分)如下:
// webpack.config.js module.exports = { // 此处省略部分配置项 output: { filename: '[name].js', path: path.resolve(__dirname, 'dist'), globalObject: "this" // 关键在此项配置,需要配置为 "this", 默认为 "window" }, // 此处省略部分配置项 }