【React+Antd】关于Upload导入XLSX时Uint8Array报错 XLSX.read的问题原因及解决方法

简介: 【React+Antd】关于Upload导入XLSX时Uint8Array报错 XLSX.read的问题原因及解决方法

报错TypeError: Cannot read properties of undefined (reading 'read') 的时候 把导入import XLSX from 'xlsx'; 改成 import * as XLSX from 'xlsx/xlsx.mjs'; 就可以了,请问是为什么?

这是因为 XLSX 库的模块结构发生了变化,从传统的 CommonJS 模块转换为 ES 模块。

相关知识

当涉及到 JavaScript 模块系统时,有两种常见的导入方式:CommonJS 和 ES 模块。

  1. CommonJS 和 ES 模块的区别:

    • CommonJS 是 Node.js 默认的模块系统,它使用 require()module.exports 进行模块的导入和导出。
    • ES 模块是 ECMAScript 标准定义的模块系统,在浏览器端和最新版本的 Node.js 中得到广泛支持,使用 importexport 语法进行模块的导入和导出。
  2. CommonJS 和 ES 模块的语法对比:

    • CommonJS 的导入语法:const module = require('module');
    • CommonJS 的导出语法:module.exports = module;
    • ES 模块的导入语法:import module from 'module';
    • ES 模块的导出语法:export default module;
  3. CommonJS 和 ES 模块的特性对比:

    • CommonJS 是同步加载模块,适用于服务器端的模块加载。
    • ES 模块是异步加载模块,支持静态分析,适用于浏览器端的模块加载。
  4. 在浏览器中使用 ES 模块:

    • 在现代浏览器中,可以使用 <script type="module"> 的方式来引入和使用 ES 模块。
    • 在 ES 模块中,可以使用 importexport 语法来导入和导出模块。
  5. 在 Node.js 中使用 ES 模块:

    • 在较新版本的 Node.js 中,可以直接使用 ES 模块的语法进行导入和导出。
    • 可以使用 .mjs 文件扩展名来标识该文件是 ES 模块。
    • 或者可以在 package.json 文件中设置 "type": "module" 来启用 ES 模块,然后可以使用 .js 文件扩展名进行导入和导出。

    CommonJS 和 ES 模块系统的差异。

相关文章
|
5月前
|
前端开发 JavaScript 数据安全/隐私保护
详解React antd中setFieldsValu的简便使用
详解React antd中setFieldsValu的简便使用
189 0
|
9天前
|
前端开发 JavaScript 网络架构
react对antd中Select组件二次封装
本文介绍了如何在React中对Ant Design(antd)的Select组件进行二次封装,包括创建MSelect组件、定义默认属性、渲染Select组件,并展示了如何使用Less进行样式定义和如何在项目中使用封装后的Select组件。
27 2
react对antd中Select组件二次封装
|
9天前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
49 1
|
2月前
|
前端开发
React使用useRef ts 报错
【8月更文挑战第17天】
58 4
|
9天前
|
前端开发
React给antd中TreeSelect组件左侧加自定义图标icon
本文介绍了如何在React中为Ant Design的TreeSelect组件的每个树节点添加自定义图标,并解决了因缺少key属性而导致的警告问题,展示了如何通过递归函数处理treeData数据并为每个节点添加图标。
19 2
React给antd中TreeSelect组件左侧加自定义图标icon
|
9天前
|
前端开发
react使用antd中的Checkbox实现多选
在React项目中,通过Ant Design的Checkbox组件实现多选。引入Checkbox,使用Checkbox.Group来管理Checkbox,设置`value`属性绑定选中项数组,通过`onChange`更新数组。维护一个全选状态,根据选中项数量与总数决定全选按钮状态。全选按钮的`onChange`事件用于控制所有Checkbox的选中状态。
10 1
react使用antd中的Checkbox实现多选
|
9天前
|
前端开发
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
本文介绍了在React项目中如何添加路径别名alias以简化模块引入路径,设置组件props的默认值,以及如何二次封装Ant Design的Modal组件。文章还提供了具体的代码示例,包括配置Webpack的alias、设置defaultProps以及封装Modal组件的步骤和方法。
23 1
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
|
4天前
|
前端开发 JavaScript 区块链
react18函数组件+antd使用指南-使用代码集合以及报错记录汇总
本文介绍了多个React开发中常见的问题及其解决方案,包括但不限于:1)`useForm`实例未连接到任何`Form`元素的警告及解决方法;2)监听页面滚动事件的实现方式;3)React 18与antd 5.8.6中定制主题的方法;4)React结合antd 4.x版本自定义主题色的步骤;5)解决`ResizeObserver loop`相关报错的技巧;6)处理React设计表单时遇到的CDN资源加载失败问题;7)解决onClick事件传参问题;8)修复类型错误等。每部分均提供详细分析与实用代码示例,帮助开发者快速定位并解决问题。
|
7天前
|
前端开发 数据安全/隐私保护
react antd 实现修改密码(原密码,新密码,再次输入新密码,新密码增加正则复杂度校验)
文章介绍了如何在React项目中使用Ant Design实现一个修改密码的组件,包括原密码、新密码和再次输入新密码的表单项,并为新密码增加了正则表达式复杂度校验。
21 0
react antd 实现修改密码(原密码,新密码,再次输入新密码,新密码增加正则复杂度校验)
|
9天前
|
前端开发 计算机视觉
React使用antd实现可编辑单元格
React结合Ant Design实现可编辑单元格的表格组件,通过EditableRow和EditableCell封装实现单元格编辑功能,并提供saveFun回调保存编辑内容。
22 1