【发布时间】:2020-09-02 09:59:43
【问题描述】:
我有一个像这样的 Vue JS 组件
<template>
<footer class="main-footer">
<p> <address>Some address</address> </p>
</footer>
</template>
当我运行vue-cli-service lint 时,它会将开头的<p> 更改为<p /> 并发出以下错误
error: Parsing error: x-invalid-end-tag (vue/no-parsing-error) at src/components/Footer.vue:3:46:
1 | <template>
2 | <footer class="main-footer">
> 3 | <p /><address>Some address</address> </p>
| ^
事实上,在我的 Webstorm 中,结束的</p> 标记为红色的Closing tag matches nothing。
我去掉了address 标签,它运行良好。有什么原因我不能使用地址标签吗?
这是我的.eslintrc.js
module.exports = {
root: true,
env: {
node: true
},
extends: [
'plugin:vue/recommended',
'@vue/standard'
],
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
indent: ['error', 4],
'space-before-function-paren': ['warn', 'never'],
'vue/require-default-prop': 'off',
'vue/no-v-html': 'off',
'vue/html-indent': ['error', 4]
},
parserOptions: {
parser: 'babel-eslint'
},
overrides: [
{
files: [
'**/__tests__/*.{j,t}s?(x)',
'**/tests/unit/**/*.spec.{j,t}s?(x)'
],
env: {
jest: true
}
}
]
}
【问题讨论】:
-
那是因为
<p />本身表示单个标签。配对标签写为<p>something</p>。现在的问题是 - 为什么它会更改 ````` 标签?
-
尝试使用
--fix关键字自动修复此 lint 错误可能会导致此问题 -
@DeepakTerse 即使写成
<p>...</p>Webstorm 说closing tag matches nothing。似乎是地址标签导致了问题 -
这可能是因为您使用的是
<address>,它是<p>标签内的块级元素,它本身就是一个块级元素
标签: javascript vue.js eslint vue-cli