JSX 元素“h1”没有相应的结束标记。ts(17008)

Posted

技术标签:

【中文标题】JSX 元素“h1”没有相应的结束标记。ts(17008)【英文标题】:JSX element 'h1' has no corresponding closing tag.ts(17008) 【发布时间】:2021-05-04 18:08:43 【问题描述】:

每当我将 index.js 保存在 vscode 中的 react.js@17.0.1 版本文件中时,代码都会以丑陋的方式重新格式化并显示如下图所示的错误:

我已经尝试了 Google 上所有可能的解决方案,但没有结果。

从卸载并重新安装 vscode 到更漂亮的卸载,重新启动 vscode,再次安装并再次重新启动 vscode,一次又一次地 create-react-app 等等。我怎样才能走上正轨?

【问题讨论】:

@Rahul Jindal 请查看***.com/questions/47161385/… index.js?我认为应该是 index.jsx。 这能回答你的问题吗? JSX element 'h1' has no corresponding closing tag @AjeetShah 我做了 create-react-app reacttutorial 并为我创建了环境。即使尝试使用 .jsx 但没有用。我已经从 Reactjs 或 JSX 下载了所有推荐的扩展,但没有结果。我已经尝试了***上关于此的所有可用内容。但是它们都不起作用,这就是我发布这个问题的原因。我知道它已经在那里了。我希望我能尽快解决这个问题,我想学习反应,我只是沉迷于这个错误。试过谷歌搜索,***,Youtube。我已经为此苦苦挣扎了 15 小时 @RahulJindal 所以,这个问题只有在你使用 VSCode 时才会出现,并且你可以使用记事本成功保存并运行 React 项目,对吧? 【参考方案1】: 原因是使用了格式扩展。

解决问题的步骤

    禁用格式化扩展。 从代码中删除多余的空格。 保存

这应该可以解决问题!

【讨论】:

【参考方案2】:

可能是因为你的 vscode 的格式化程序扩展。请务必使用 js 代码格式化程序格式化你的代码。

【讨论】:

【参考方案3】:

将文件从 index.js 更改为 index.jsx 并重新编写标签以及“hello world”对我有用。

然后,我将 index.jsx 改回 index.js 并且错误没有再次出现。不知道为什么...

【讨论】:

【参考方案4】:

要使用html 语法,您需要指定.jsx.tsx 文件扩展名。

如果你想制作没有 JSX 语法的 React 元素,请使用 createElement(...)

创建 React 元素

我们建议使用 JSX 来描述您的 UI 应该是什么样子。每个 JSX 元素只是调用 React.createElement() 的语法糖。如果您使用 JSX,通常不会直接调用以下方法。

createElement() createFactory()

来源:https://reactjs.org/docs/react-api.html

【讨论】:

【参考方案5】:

首先,您必须将文件从“.js”重命名为“.jsx

然后,你可以试试这个语法:

const element = <h1>this is something written in js</h1>;

ReactDOM.render(element, document.getElementById('root'));

=> JSX 标签 (&lt;Component /&gt;) 不是标准的 javascript,如果将它们放在 .js 文件中,则没有特殊含义

=> 如果您想在 .js 文件中创建元素,请查看 https://developer.mozilla.org/fr/docs/Web/API/Document/createElement 或 https://reactjs.org/docs/react-api.html

【讨论】:

【参考方案6】:

将文件扩展名从 .js 文件重命名为 .jsx

在屏幕底部,您会看到语言模式(当前设置为 Javascript)。

-> 点击“设置语言模式”

-> 然后将您的语言模式设置为“JavaScript React”

【讨论】:

【参考方案7】:

在 Visual Studio Code 上寻找一个滚轮图标,它位于帐户图标下方 [类似于人形],在我的例子中位于左下方。 如果您将鼠标悬停在滚轮上 => Manage 标签会出现。 单击滚轮,会弹出一个菜单,您将在其中看到 Extensions 。点击扩展。现在在你的 extensions 中寻找 JS-CSS-HTML-formatter 。在 JS-CSS-HTML-formatter 旁边,您会再次看到滚轮图标;单击它并从弹出菜单中选择禁用或卸载

更多文档,请咨询: https://marketplace.visualstudio.com/items?itemName=lonefy.vscode-JS-CSS-HTML-formatter

【讨论】:

以上是关于JSX 元素“h1”没有相应的结束标记。ts(17008)的主要内容,如果未能解决你的问题,请参考以下文章

JSX 元素类不支持属性,因为它没有“道具”property.ts(2607)

我无法在 css 中设置任何 html/jsx 标记的样式,因为它说'h1“选择器”不是纯的'

错误 TS2602:JSX 元素隐式具有类型“任何”,因为全局类型“JSX.Element”不存在

映射元素中的 JSX 映射元素,相邻的 JSX 元素必须包含在封闭标记中

JSX 代表啥?

React 使用jsx