当前位置: 首页 > 知识库问答 >
问题:

vue.js - 表格无法显示:如何解决 'HtmlAttributePlugin' 错误?

齐阎宝
2026-01-04

解决 'HtmlAttributePlugin' 错误
看下

<title>WPF & WEBVIEW2 混合开发学习</title>
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<script src="https://unpkg.com/@visactor/vtable/dist/vtable.min.js"></script>
<script src="https://unpkg.com/@visactor/vue-vtable/dist/vue-vtable.min.js"></script>

<div id="app"> <ListTable :options="tableOptions" /> </div>

const { createApp } = Vue; 
const app = createApp({
    setup() {
        const option = {
            columns: [
                { field: '0', caption: '名称' },
                { field: '1', caption: '年龄' },
                { field: '2', caption: '性别' },
                { field: '3', caption: '爱好' }
            ],
            records: new Array(1000).fill(['Yelineee', 18, '男', '��'])
        };
        return { tableOptions: option };
    }
});
app.mount('#app');

共有2个答案

杨宏儒
2026-01-04

Vue 3 + vue-vtable 表格无法显示:如何解决 'HtmlAttributePlugin' 错误?

邓季
2026-01-04

基于您提供的代码和描述的 'HtmlAttributePlugin' 错误,我诊断出问题可能源于 VTable 的列配置中使用 caption 而非标准属性 title。VTable(特别是 @visactor/vtable)内部使用 HtmlAttributePlugin 来处理单元格的 HTML 属性渲染,当遇到无效属性(如 caption)时,会抛出错误或导致表格无法显示。错误通常会在浏览器控制台中出现类似 Uncaught Error: Invalid column option 或直接引用 HtmlAttributePlugin 的消息。

解决方案

  1. 修改列配置中的 captiontitle

    • 在 VTable 中,列定义应使用 title 属性表示列标题,而不是 captioncaption 是无效属性,会导致 HtmlAttributePlugin 处理失败。
    • 在您的代码中,将:

      columns: [
          { field: '0', caption: '名称' },
          { field: '1', caption: '年龄' },
          { field: '2', caption: '性别' },
          { field: '3', caption: '爱好' }
      ],

      改为:

      columns: [
          { field: '0', title: '名称' },
          { field: '1', title: '年龄' },
          { field: '2', title: '性别' },
          { field: '3', title: '爱好' }
      ],
    • 原因title 是 VTable 的合法属性,HtmlAttributePlugin 能正确处理它。使用 caption 会导致插件解析错误。
  2. 确保所有脚本正确加载

    • 检查浏览器控制台(按 F12 打开)是否有 404 错误或其他加载失败。所有 CDN 链接应可用:

      • Vue 3 链接正常:https://unpkg.com/vue@3/dist/vue.global.prod.js
      • VTable 和 Vue-VTable 链接正常:确保版本兼容(当前代码使用最新版本,一般没问题)。
    • <head> 中添加错误处理来验证加载:

      <script src="https://unpkg.com/vue@3/dist/vue.global.prod.js" onerror="console.error('Vue failed to load')"></script>
      <script src="https://unpkg.com/@visactor/vtable/dist/vtable.min.js" onerror="console.error('VTable failed to load')"></script>
      <script src="https://unpkg.com/@visactor/vue-vtable/dist/vue-vtable.min.js" onerror="console.error('Vue-VTable failed to load')"></script>
  3. 完整修复后的代码示例
    以下是您的代码修改后的版本。我已将 caption 改为 title,并添加了注释说明关键点:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>WPF & WEBVIEW2 混合开发学习</title>
        <!-- 引入 Vue 3 -->
        <script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
        <!-- 引入 VTable 核心库 -->
        <script src="https://unpkg.com/@visactor/vtable/dist/vtable.min.js"></script>
        <!-- 引入 Vue-VTable 封装库 (自动注册全局组件) -->
        <script src="https://unpkg.com/@visactor/vue-vtable/dist/vue-vtable.min.js"></script>
    </head>
    <body>
        <div id="app"> 
            <ListTable :options="tableOptions" /> <!-- 确保组件名大小写匹配: 通常是 ListTable -->
        </div>
    
        <script>
            const { createApp } = Vue; 
            const app = createApp({
                setup() {
                    // 使用 title 替代 caption
                    const option = {
                        columns: [
                            { field: '0', title: '名称' }, // 修改为 title
                            { field: '1', title: '年龄' },
                            { field: '2', title: '性别' },
                            { field: '3', title: '爱好' }
                        ],
                        records: new Array(1000).fill(['Yelineee', 18, '男', '��']) // 包含 emoji 没有问题
                    };
                    return { tableOptions: option };
                }
            });
            app.mount('#app'); // 确保挂载点正确
        </script>
    </body>
    </html>
  4. 其他排查步骤

    • 检查控制台错误:运行页面后,按 F12 打开开发者工具,查看 Console 标签页。确认是否有具体错误(如 [VTable] Invalid column optionHtmlAttributePlugin is not defined)。如果有其他错误,请提供详细信息。
    • 验证 Vue-VTable 注册:vue-vtable.min.js 应自动注册全局组件 <ListTable>。如果组件未注册,控制台会有 Unknown custom element 错误。手动注册可添加:

      import { ListTable } from '@visactor/vue-vtable'; // 但 CDN 方式已全局注册,通常不需要
    • 测试简化案例:移除复杂部分(如减少 records 数量),验证表格是否显示。
    • 版本问题:确保所有库版本兼容。当前 CDN 链接使用最新版本(Vue 3.x 和 VTable 最新),但如果问题持续,尝试固定版本:

      • 例如:https://unpkg.com/vue@3.4.27/dist/vue.global.prod.js

如果修改后表格仍不显示,请提供浏览器控制台的具体错误消息,我会进一步帮助诊断! ��

 类似资料:
  • 大家有用到 element ui plus table 表格展示下面的表格内容 单独画感觉有点难度 表具1 表具2 最多新增到表具6 有人做过吗?求解决 用过其它办法没有解决掉,求大神解决 谢谢

  • json 0信息:如果以OK结尾,则工作 1详细cli['C:\Program Files\nodejs\node.exe', 1详细cli'C:\users\vkarutha\appdata\roaming\npm\node_modules\npm\bin\npm-cli.js', 1详细的cli“开始”] 2信息使用npm@4.2.0 3使用节点@v6.9.3的信息 4详细运行脚本['pres

  • 现在我正在尝试从git运行克隆应用程序https://github.com/frinder/frinder-app但问题是该应用程序制作了很长时间,所以应该改变bulid.gradle 但是当我尝试相同的同步实现“com.android.支持:动画矢量可绘制:28.0.0”,但如果我删除它,请继续向我显示错误28.0.0它显示如下 但我不知道是什么造成了不完全相同的版本 这是应用程序build.g

  • 请教一下大佬们 为什么 迷糊查询的时候 会报错,key没有重复的嗄?? bug 修改

  • 本文向大家介绍完美解决thinkphp验证码出错无法显示的方法,包括了完美解决thinkphp验证码出错无法显示的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了完美解决thinkphp验证码出错无法显示的方法。分享给大家供大家参考。具体分析如下: 今天做到验证码这一块,想到tp自带验证图片,大喜,但鼓捣半天不出来,一直是个小 X的样子. 官方提示如下: 如果无法显示验证码,请检查:

  • 本文向大家介绍BootStrap glyphicon图标无法显示的解决方法,包括了BootStrap glyphicon图标无法显示的解决方法的使用技巧和注意事项,需要的朋友参考一下 如果不注意bootstrap引入css和fonts的规范,则可能会导致bootstrap 在显示glyphicon图标时无法正常显示,显示为方框。 此时可搜索bootstrap.css中的.glyphicon,可发现

  • 问题内容: 我只是Swift编码的初学者。我的想法很简单,这是一个带有两个按钮的应用程序。单击时,文本字段将更改其文本。在Main.StoryBoard中,添加一个文本字段和两个按钮。在ViewController.swift文件中。我这样写: 应该没事的。但是,出现错误,显示: 线程1:信号SIGABRT 在文件AppDelegate.swift中: 我的代码有什么问题? 问题答案: 要解决该问

  • 我尝试在JSP页面上显示一些数据库记录。在我的项目中,我必须使用index.html和studentdeatils.jsp这样的页面。我将requestDispather设置为从索引页转到studentDetails页。 当我试图显示JSP时,我的浏览器页面中出现了以下错误。 请分享你的想法。