使用react-ace构建编辑器时报ReferenceError: ace is not defined如何解决
报错 ReferenceError: ace is not defined 解决方案
- 方案一:手动挂载ace到全局作用域
react-ace默认会从全局window对象读取ace实例,你使用的src-noconflict版本的ace-builds不会自动挂载实例到全局,需要手动添加挂载代码,完整导入部分修改如下:
import React from "react"; import { render } from "react-dom"; import AceEditor from "react-ace"; // 新增两行代码 import ace from 'ace-builds/src-noconflict/ace' window.ace = ace import "ace-builds/src-noconflict/mode-java"; import "ace-builds/src-noconflict/theme-github"; function onChange(newValue) { console.log("change", newValue); } render( <AceEditor mode="java" theme="github" onChange={onChange} name="UNIQUE_ID_OF_DIV" editorProps={{ $blockScrolling: true }} />, document.getElementById("example") );
- 方案二:匹配依赖版本
如果修改导入后仍然报错,大概率是react-ace和ace-builds的大版本不兼容,执行以下命令重新安装最新匹配版本即可:npm uninstall react-ace ace-builds && npm install react-ace@latest ace-builds@latest - 方案三:更换压缩版导入路径
部分构建工具(如Vite、Create React App)的tree shaking机制会误剔除未显式引用的ace核心代码,可以将导入路径替换为min压缩版路径,强制引入完整核心代码:
import "ace-builds/src-min-noconflict/ace"; import "ace-builds/src-min-noconflict/mode-java"; import "ace-builds/src-min-noconflict/theme-github";
内容的提问来源于stack exchange,提问作者abdellah
相关产品推荐
相关产品推荐

