reactjs - 使用react-dropzone-uploader 缩小vite 构建后的错误

标签 reactjs vite

我已将我的应用程序从 cra 迁移到 vite,但现在我的 dropzone uploader 无法正常工作,并且仅在生产中返回此错误

它看起来像是来自 Dropzone 组件的错误,但我无法解释为什么它在开发中工作正常并且与 CRA 一起工作

错误: Uncaught Error :缩小的 React 错误 #130;访问 https://reactjs.org/docs/error-decoder.html?invariant=130&args[]=object&args[]=获取完整消息,或使用非缩小开发环境获取完整错误和其他有用的警告。

组件:

import Dropzone from "react-dropzone-uploader";
import api from "../../../Service/API/API";

import {lang} from "../../../Service/Translator";
import "../../../App.css"

export function UploadBox({update, closeAfterUpload, onClose, body, url, disabled}) {

   const getUploadParams = ({file, meta}) => {
      const body = new FormData()
      for (let k of Object.keys(body)) {
         body.append(k, body[k])
      }

      body.append('title', file.name.split(".")[0])
      body.append('file', file)

      return {
         url: `${api.getURL()}${url ? url : 'user/files'}`,
         body: body,
         field: {},
         headers: {Authorization: `Bearer ${api.Auth.getAccessToken()}`},
         meta: meta
      }
   }

   // called every time a file's `status` changes
   const handleChangeStatus = ({meta, file, xhr}, status) => {
      if (status === 'done') {
         let response = JSON.parse(xhr.response)
         meta.id = response.id

         api.snackAction(lang.UploadSucceed.replace('{0}', meta.name), "success")

         update ? update() : null

         if (closeAfterUpload) {
            onClose()
         }
      } else if (status === 'aborted') {
         api.snackAction(lang.UploadAborted.replace('{0}', meta.name), "warning")

      } else if (status === 'error_upload') {
         api.snackAction(lang.UploadError.replace('{0}', meta.name), "error")

      } else if (status === 'rejected_file_type') {
         api.snackAction(lang.UploadRejectedFileType, "Warning")

      } else if (status === 'removed') {
         api.Enterprise
            .Files
            .delete(meta.id)
            .then(() => {
               update ? update() : null
            })

      }

   }

   return (
      <div>
         <Dropzone
            disabled={disabled}
            body={body}
            getUploadParams={getUploadParams}
            onChangeStatus={handleChangeStatus}
            classNames={"preview_darkmode"}
            maxSizeBytes={Math.pow(2, 30)}
            // onSubmit={this.handleSubmit}
            accept="image/*,.pdf"
         />

      </div>
   );

}

最佳答案

由我创建以下文件并使用 DropzoneFix 组件,并且有效:

// DropzoneFix.tsx
import Dropzone from 'react-dropzone-uploader';
function fixComponent<T>(component: T): T {
    return (component as any).default ?? component;
}
export const DropzoneFix = fixComponent(Dropzone);

关于reactjs - 使用react-dropzone-uploader 缩小vite 构建后的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69286825/

相关文章:

javascript - 在 react 中切换按钮时无法查看数据。没有错误

node.js - 我想向通过单击按钮订阅我的网页的用户发送电子邮件

reactjs - MuiThemeProvider 中的错误

reactjs - 如何使用 react-image-gallery 停止幻灯片上的所有 react-youtube 视频?

vue.js - 如何使用 vitest 和 vue test utils 测试 Vue 2 css 类样式

reactjs - 使用 debounce 时解释 useCallback

yarnpkg - Windi CSS HMR 不适用于 Svelte + vite 应用程序

npm - 如何将 vite.config.js 文件添加到我的项目中?

vite - Formatjs/react-intl 与 Vite

laravel vite `npm run build` 问题