typescript - Vue 3 Malrot krever nøyaktig ett element. eslint-plugin-vue


Etter å ha satt opp et Vue 3-prosjekt, la jeg merke til en feil i App.vue.

A functional component that renders the matched component for the given path. Components rendered in can also contain its own , which will render components for nested paths.

API Reference

[vue/no-multiple-template-root]
The template root requires exactly one element.eslint-plugin-vue

Jeg prøvde å sette

"vue/no-multiple-template-root": 0

i min .eslintrc.js

Men feilen forblir. Hvordan kan jeg bli kvitt feilen? Siden i Vue 3 trenger du ikke å ha nøyaktig ett element i en mal.

module.exports = {
    root: true,
    env: {
        node: true
    },
    extends: [
        "plugin:vue/vue3-essential",
        "eslint:recommended",
        "@vue/typescript/recommended",
        "@vue/prettier",
        "@vue/prettier/@typescript-eslint"
    ],
    parserOptions: {
        ecmaVersion: 2020
    },
    rules: {
        "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
        "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
        "vue/no-multiple-template-root": 0
    }
};

Svar #1

Jeg endte opp med å slå av Vetur-linting. Vetur tror at det er et Vue 2-prosjekt fordi det er i et VS Code-arbeidsområde.

https://github.com/vuejs/vetur/issues/2299#issuecomment-696015374

Du kan løse dette ved å gjøre

F1>Preferences:Open Settings (JSON)

lim

"vetur.validation.template": false,
"vetur.validation.script": false,
"vetur.validation.style": false,

Svar #2

Feilen oppstod hos meg, fordi jeg ikke hadde åpnet prosjektsroten i VS Code, men overordnet mappe, og Vetur så dermed etter package.json der.

Svar #3

Hvis du jobber på et monorepo og derfor ikke har package.json i arbeidsområdetets rot, vil Vetur som standard ikke kunne finne package.json, og dermed kunne den ikke finne ut hvilken Vue-versjon som brukes.

I så fall må vi fortelle Vetur plasseringen av package.json

https://vuejs.github.io/vetur/guide/setup.html#advanced

Svar #4

Her jobbet jeg med dette:

i .eslintrc.js

i stedet for:

rules: { "vue/no-multiple-template-root": 0 }

prøv :

rules: {"vue/no-multiple-template-root": "off" }

Svar #5

Deaktiver Vetur og bruk Volar i stedet. Det er nå den offisielle anbefalingen for Vue 3-prosjekter.

Fra den offisielle migrasjonsguiden:

Det anbefales å bruke VSCode med vår offisielle utvidelse Volar (åpnes i nytt vindu), som gir omfattende IDE-støtte for Vue 3.

Relaterte artikler