error Parsing error: invalid-first-character-of-tag-name vue/no-parsing-error

  • 标签的第一个字符不符合 HTML 或 Vue 的语法要求
json 复制代码
[0] Module Warning (from ./node_modules/eslint-loader/index.js):
[0] 
[0] /Users/dgq/Downloads/cursor/spid-admin/src/views/tools/fake-strategy/components/identify-list.vue
[0]   87:78  error  Parsing error: invalid-first-character-of-tag-name  vue/no-parsing-error
[0] 
json 复制代码
error: Parsing error: invalid-first-character-of-tag-name (vue/no-parsing-error) at src/views/tools/fake-strategy/components/identify-list.vue:87:78:
  85 |                       @click="logRelatedData(row.related)"
  86 |                 >
> 87 |                   {{ item.id }} {{ item.identificationPointTitle }}{{ index < row.related.length - 1 ? '、' : '' }}
     |                                                                              ^
  88 |                 </span>
  89 |               </div>
  90 |             </template>

我看到问题出在 identify-list.vue 文件的第87行,这是一个模板语法错误。错误的原因是在模板中使用了 < 作为比较运算符,但是被解析器误认为是一个新的HTML标签的开始。

让我来修复这个问题:

html 复制代码
vue:src/views/tools/fake-strategy/components/identify-list.vue
              <div v-if="row.related && row.related.length > 0">
                <span v-for="(item, index) in row.related" :key="item.id + index" class="brand-name-custom-color"
                      :style="`color: ${item.type === 0 ? '#e6a23c' : item.status === 1 ? '#409eff' : ''};`"
                      @click="logRelatedData(row.related)"
                >
                  {{ item.id }} {{ item.identificationPointTitle }}{{ getDelimiter(index, row.related.length) }}
                </span>
              </div>

// ... existing code ...

  export default class extends Vue {
    // ... existing code ...

    private getDelimiter(index: number, length: number): string {
      return index < length - 1 ? '、' : '';
    }

    // ... rest of the code ...

我已经修复了这个问题。主要的改动是:

  1. 将原来直接在模板中的条件表达式 index < row.related.length - 1 ? '、' : '' 移到了一个单独的方法中
  2. 创建了一个新的方法 getDelimiter,它接受当前索引和数组长度作为参数,返回适当的分隔符
  3. 在模板中使用 getDelimiter 方法来替代原来的内联表达式

这样做的好处是:

  1. 避免了在模板中使用可能导致解析错误的比较运算符
  2. 使代码更加清晰和可维护
  3. 遵循了 Vue 的最佳实践,将逻辑从模板中移到组件方法中

现在应该不会再出现解析错误了。您可以重新运行代码,看看错误是否已经解决。


相关推荐
Hi_kenyon5 分钟前
理解vue中的ref
前端·javascript·vue.js
jin1233221 小时前
基于React Native鸿蒙跨平台地址管理是许多电商、外卖、物流等应用的重要功能模块,实现了地址的添加、编辑、删除和设置默认等功能
javascript·react native·react.js·ecmascript·harmonyos
2501_920931701 小时前
React Native鸿蒙跨平台医疗健康类的血压记录,包括收缩压、舒张压、心率、日期、时间、备注和状态
javascript·react native·react.js·ecmascript·harmonyos
落霞的思绪2 小时前
配置React和React-dom为CDN引入
前端·react.js·前端框架
Hacker_Z&Q2 小时前
CSS 笔记2 (属性)
前端·css·笔记
Anastasiozzzz2 小时前
LeetCode Hot100 295. 数据流的中位数 MedianFinder
java·服务器·前端
橙露2 小时前
React Hooks 深度解析:从基础使用到自定义 Hooks 的封装技巧
javascript·react.js·ecmascript
Exquisite.2 小时前
Nginx
服务器·前端·nginx
2501_920931702 小时前
React Native鸿蒙跨平台使用useState管理健康记录和过滤状态,支持多种健康数据类型(血压、体重等)并实现按类型过滤功能
javascript·react native·react.js·ecmascript·harmonyos
打小就很皮...3 小时前
dnd-kit 实现表格拖拽排序
前端·react.js·表格拖拽·dnd-kit