VueJS+Nuxt.js项目中VSCode检测全部DOM元素报错:Property 'div' does not exist on type 'JSX.IntrinsicElements' 解决方案咨询
Property 'div' does not exist on type 'JSX.IntrinsicElements'的问题 我之前在Nuxt + TypeScript项目里也碰到过一模一样的坑!这种报错本质是TypeScript没法正确识别Vue的DOM元素类型定义,给你几个亲测有效的解决思路:
安装缺失的类型依赖
首先确保项目里装了Vue和Nuxt对应的类型包,打开终端执行:# Nuxt 2 项目 npm install -D @vue/runtime-core @nuxt/types # Nuxt 3 项目 npm install -D @vue/runtime-core @nuxt/kit如果你的项目用到了TSX语法,还需要额外安装
@vue/runtime-dom,它包含了所有DOM内置元素的类型定义:npm install -D @vue/runtime-dom修正tsconfig.json配置
打开项目根目录的tsconfig.json,检查compilerOptions里的配置是否正确:{ "compilerOptions": { "jsx": "preserve", "jsxImportSource": "vue", "types": ["@nuxt/types", "@vue/runtime-core", "@vue/runtime-dom"] } }注意Nuxt 3会自动生成
tsconfig.json,如果手动修改过,建议先恢复成默认配置再调整,避免冲突。重启VSCode的TypeScript服务
编辑器缓存经常会搞出这种乌龙!按Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),搜索并执行TypeScript: Restart TS Server,大部分情况下重启后报错就会消失。检查单文件组件的语法声明
如果你的.vue文件里用了JSX/TSX写法(比如在render函数里直接写<div>),一定要在<script>标签上加上lang="tsx"或lang="jsx":<script lang="tsx"> import { defineComponent } from 'vue' export default defineComponent({ render() { return <div>Hello Nuxt!</div> } }) </script>升级依赖版本
旧版本的Nuxt或Vue可能存在类型定义的兼容性问题,尝试把Nuxt、Vue以及相关类型包升级到最新稳定版,很多时候能解决这类隐性bug。
如果以上方法都没用,可以检查项目里的自定义.d.ts文件,看看有没有不小心覆盖了JSX.IntrinsicElements的类型定义,这种情况也会导致类似报错。
内容的提问来源于stack exchange,提问作者user19540948

