添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Webpack+pdfjs 报错:window is not defined

今天在使用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"
    // 此处省略部分配置项
                                    最近使用 webpack 4 配置 ssr 环境,发现的问题:
ReferenceError: document is not defined
本次package.json使用版本信息:
  vue-loader: ^15.4.2,
  mini-css-extract-plugin: ^0.4.3,
  webpack: ^4.20.2,
  webpack-cli: ^3.1.2
问题原因:
在服务端渲染打包的配置中使用了mini-css-extract-plugin是的server bundle中会使用到document
                                    webpack项目 vue-pdf引入 控制台保存 window is not defined解决方案
webpack.config.js中,output添加如下一行代码:
module.exports = {
  output: {
    globalObject: "this"
重启项目,刷新浏览器即可
                                    安装vue依赖时报错如下:
npm WARN pdfjs-dist@2.2.228 requires a peer of webpack@^3.0.0 || ^4.0.0-alpha.0 || ^4.0.0 but none is installed. You must install peer dependencies yourself.
解决方法:
最好安装版本比较低点的webpack
                                    我正在尝试使用pdf.jspdf加载到Web应用程序中,以便我可以进一步从pdf文件中提取信息.但是我用一个非常小的例子得到了这个错误.我也无法在控制台中访问PDFJS.PDF.js Learning$(document).ready(function () {var url = "https://github.com/mozilla/pdf.js/blob/master/web/compres...
                                    一、PDF.js的下载
从官网直接下载即可,地址:http://mozilla.github.io/pdf.js/getting_started/#download
建议下载稳定版本,如下图所示:
下载完成后将压缩包解压放在项目下,按照正常引入方式引入即可。
二、使用PDF.js
1.vue使用
第一步安装:
npm install --save pdfjs-dist
第二步引入:
import...
                                    前言:昨天接到一个需求,需要在Android端展示一个PDF文件,IOS那边很方便,只需要使用WebView即可,而安卓就不行,也查阅了部分资料,接下来我将解决问题的过程和最终采用的方案记录下来。
还记得在上一家公司也做过展示PDF文件,而且文件比我现在要做的需求大得多,一般是5M以上,在上一家公司使用的是AndroidPdfViewer,但是这种方法的缺点很明显,就是增大APK的体积,需要加载....
                                    最近在使用python写实验遇到这个问题:
NameError: name ‘xxx’ is not defined
在学习python或者在使用python的过程中这个问题大家肯定都遇到过,在这里我就这个问题总结以下几种情况:
错误NameError: name ‘xxx’ is not defined总结
情况一:要加双引号(" ")或者(’ ')而没加
情况二:字符缩进格式的问题
情况三:if __name__=='__main__' : 没有和class类进行对齐
情况四:NameError: na
                                    Pdf文件太大—要做成切片下载—技术选型—pdf.js—搜索技术方案—公众号文章—开始—拿到后端切片数据(五页为一个切片)— 获取总页数和每张pdf的宽高—获取当前屏幕的宽度— 和pdf的宽度做对比得到缩小的比例—根据比例得出每张pdf页面渲染的宽高和整个所有页面的总高度—创建canvas元素,渲染pdf页面(pdf.js中的方法,可以直接渲染canvas)—创建div元素并且包裹canvas元素,并把div放在页面对应的位置上,使用position:absolute,绝对定位的方式。---- 监听滚动..
                                    原因很简单,您引入的第三方库内源码用到了 `window / document`,当 Nuxt 在服务端(Node.js)编译渲染时,node 环境 本身并没有 `window / document` 对象,所以就报错了。Nuxt 等 SSR 框架中,引入第三方包 (类似于 富文本编辑器: UEditor、wangEditor、vue2Editor、quill…) 的时候,报错 Document / Window is not defined,或者报错 render function or template