React Pdf pdf worker 路径必须是字符串收到未定义的错误

问题描述

我正在使用 react-pdf。我的版本是;节点版本:8.9.4,react-pdf:^5.3.2,react 版本:16.3.1。我阅读了文档并创建了一个组件。 (https://www.npmjs.com/package/react-pdf) 组件适用于 CDN 解决方案,但不适用于从 entry.webpack 导入文档和页面。我收到此错误node_modules/react-pdf/node_modules/file-loader/dist/cjs.js!./node_modules/react-pdf/node_modules/pdfjs-dist/build/pdf.worker.js 模块构建失败:类型错误:路径必须是字符串。收到未定义

我的组件是;

import { Document,Page } from 'react-pdf/dist/esm/entry.webpack'

render() {
          <Document
            file={pdf}
            onLoadSuccess={this.onDocumentLoadSuccess}
            options={options}
            rotate={this.state.rotate}
            className="document__page__main"
         >
            <Page
              object-fit="fill"
              scale={this.state.scale}
              pageNumber={this.state.pageNumber}
              width={600}
              heigth={600}
            />
          </Document>
}

我的 webpack 是;

var webpack = require('webpack')
const { resolve } = require('path')
const Progressplugin = require('webpack/lib/Progressplugin')
var HtmlWebpackPlugin = require('html-webpack-plugin')
var vendorArray = require('./vendors')
var MergeJsonWebpackPlugin = require('merge-jsons-webpack-plugin')
var NpmInstallPlugin = require('npm-install-webpack-plugin')

module.exports = {
  devtool: 'source-map',resolve: {
    modules: [resolve(__dirname,'src'),'node_modules']
  },entry: {
    main: [
      'react-hot-loader/patch','webpack-dev-server/client?http://0.0.0.0:3001','webpack/hot/only-dev-server','./src/main.js'
    ],vendor: vendorArray
  },output: {
    filename: '[name].[hash:8].js',path: __dirname,publicPath: '/'
  },module: {
    rules: [
      {
        test: /\.(js|jsx)$/,enforce: 'pre',loader: './tools/proto-style-loader/index.js'
      },{
        test: /\.js?$/,exclude: /(node_modules|bower_components)/,use: [
          {
            loader: 'babel-loader',options: {
              cacheDirectory: true
            }
          }
        ]
      },/*{
        test: /\.(png|jpg|gif)$/,use: [
          {
            loader: 'file-loader'
          }
        ]
      },*/
      {
        test: /\.css$/,use: ['style-loader','css-loader']
      },{
        test: /\.scss$/,use: [
          {
            loader: 'style-loader'
          },{
            loader: 'css-loader',options: {
              url: false
            }
          },{
            loader: 'sass-loader',options: {
              url: false
            }
          }
        ]
      },{
        test: /\.(eot|woff|woff2|ttf|svg|png|jpg|gif)([\?]?.*)$/,loader: 'url-loader'
      }
    ]
  },performance: {
    maxAssetSize: 40000000,maxEntrypointSize: 40000000,hints: 'error'
  },plugins: [
    new webpack.DefinePlugin({
      APP_ENV: JSON.stringify('dev')
    }),new Progressplugin(),new webpack.HotModuleReplacementPlugin(),new webpack.NamedModulesPlugin(),new webpack.NoEmitOnErrorsPlugin(),new webpack.optimize.CommonsChunkPlugin({
      name: ['vendor']
    }),new HtmlWebpackPlugin({
      template: './public/index.html'
    }),new MergeJsonWebpackPlugin({
      output: {
        groupBy: [
          {
            pattern: './src/**/en-US.json',fileName: 'en-US.json'
          },{
            pattern: './src/**/tr-TR.json',fileName: 'tr-TR.json'
          }
        ]
      },globOptions: {
        nosort: true
      }
    })
  ]
}

解决方法

我更改了 react-pdf 版本 4.2.0。因为我的webapck版本是3.8.1

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...