react-pdf 高版本编译报错

729 阅读1分钟

这两天需要做一个pdf合同比对的组件,用到react-pdf;遇到一些问题,记录下处理过程;

环境:

umi: 2.13.12
react: ^16.8.0
antd: 3.26.20

上手直接yarn add react-pdf 7.1.3 最新版本呗;ok 跑! 傻眼了不,报错

image.png

降版本,react-pdf 6.2.2, 也报错

image.png

react-pdf@5.2.0 是ok的。但是我这次一定要用6以上的版本,只能想办法解决。

先记录下最终解决方法吧 在umi工程的config目录下config.js文件里,加了这么一段配置,同时 yarn add @babel/preset-env@7.20.2 -D 完美解决了。

chainWebpack(config, { webpack }) {
config.module
    .rule('compile')
      .test(/\.(mjs|jsx|js)$/)
      .include
        .add(path.join(__dirname, '../node_modules/pdfjs-dist/build'))
        .end()
      .use('babel')
        .loader('babel-loader')
        .options({
          presets: [
            ['@babel/preset-env', { modules: false }]
          ],
          plugins: [
            '@babel/plugin-syntax-dynamic-import',
            // ...
          ],
        });
       }

方法出自github, 原因就是pdfjs-dist新版本用的新语法,然后react-pdf从6版本开始引用他也放弃了引用legacy目录下的代码,老工程就傻了。