You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ace.js+Electron开发编辑器时,getValue()输出含多余空白求助

问题原因与解决方案

核心问题1:获取编辑器内容的时机错误

你在页面初始化时就执行了code = editor.getValue(),这意味着code变量存储的是编辑器初始状态的内容,而非点击保存按钮时的最新代码。每次点击保存,都是把这个静态初始值写入文件,自然会和编辑器当前显示的内容不符,甚至出现多余空白。

核心问题2:Ace配置选项的驼峰错误

Ace的配置选项采用小驼峰命名,你代码里的UseWrapMode和UseSoftTabs应该改为useWrapMode和useSoftTabs,否则这些配置不会生效,可能导致换行、缩进的显示与实际存储不一致。

修改后的代码

app.js 修正版本:

editor.setTheme("ace/theme/monokai")
editor.session.setMode("ace/mode/arduino")

editor.setOptions({
    fontFamily: "Fira Code",
    fontSize: "10pt",
    enableBasicAutocompletion: true,
    enableSnippets: true,
    showPrintMargin: false,
    useWrapMode: true, // 修正驼峰命名
    useSoftTabs: true, // 修正驼峰命名
})

beautify.beautify(editor.session)

save_file.addEventListener('click', () => {
    // 点击保存时实时获取编辑器最新内容
    const code = editor.getValue()
    window.eapi.saveFile('text.ino', code)
})

index.js 补充优化:

为避免编码问题导致的异常空白,建议指定编码格式为utf8:

fs.writeFile(fname, code, 'utf8', (err) => {
    if (err) {
        console.log(err)
    } else {
        console.log('Save successful') // 修正拼写错误
    }
})

额外优化建议

如果需要确保保存的是格式化后的代码,可以在保存前重新执行美化操作:

save_file.addEventListener('click', () => {
    beautify.beautify(editor.session) // 保存前重新格式化代码
    const code = editor.getValue()
    window.eapi.saveFile('text.ino', code)
})

内容的提问来源于stack exchange,提问作者Anant Narayan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:27:27