【问题标题】:React Fragment results in Element Type is Invalid Error in Visual Studio 2017在 Visual Studio 2017 中 React Fragment 导致 Element Type is Invalid 错误
【发布时间】:2018-04-03 06:23:33
【问题描述】:

我在尝试将 Fragments 与 React / Typescript 与 Visual Studio 2017 一起使用时遇到此错误:

NodeInvocationException: 元素类型无效:需要字符串(对于内置组件)或类/函数(对于复合组件),但得到:符号。

堆栈:

  • 反应 16.3
  • react-dom 16.3
  • 打字稿 2.6.2

我也在用示例代码进行测试:

public render() {
        return (
            <>
            Some text.
            <h2>A heading</h2>
            More text.
            <h2>Another heading</h2>
            Even more text.
          </>
        );
    }

我发现了类似的问题here。在他最后的 cmets 中,Stephen Muhr 说他在没有提供太多细节的情况下更新了他的 vendor.js 包以使其工作。从他的 cmets 看来,他在升级到 react 16.2 时遇到了问题。但是,对我来说,我可以验证 react 16.3 是否成功运行(我在运行时输出 react 版本)。因此,它可能无法解决我的问题。由于我是新用户,因此无法就该问题添加到 cmets。

由于错误是服务器端错误,我想我缺少指定正确版本的打字稿的配置。我使用 npm install typescript@2.6.2 它存在于 node_modules 文件夹中。我还下载了 TypeScript SDK for 2.6.2 并安装了它。我还将项目属性设置为 Typescript 2.6(并且还尝试了“使用最新的”)。这些都没有奏效。

我不知道如何输出运行时使用的打字稿版本。

编辑 以下在我的机器上返回了不同版本的打字稿: - tsc -v 产生 2.3.5。 - npm ls -g typescript 产生 2.6.2。 - npm ls typescript 产生 2.6.2。

所以,看起来 tsc -v 已经过时了,但我不知道如何更新它。

如果有人可以就可能导致此错误的原因提供任何建议,我将不胜感激。谢谢。

【问题讨论】:

    标签: reactjs typescript visual-studio-2017 typescript2.6


    【解决方案1】:

    在您的问题中,您提到您的全局 tsc 是 2.3.5 版。正如您提到的,从 2.6 开始支持片段。

    您可以使用npm install -g typescript@2.6.2 在全局范围内更新您的tsc。但是,如果您从 Visual Studio 命令提示符运行该命令,那么它将从 SDK 文件夹中获取 tsc。 TypeScript 应该安装在: C:\Program Files (x86)\Microsoft SDKs\TypeScript

    如果您使用的是 .csproj。您也可以查看您的项目文件并查看 TypeScript 的版本,它将在 TypeScriptToolsVersion 下。

    【讨论】:

    • 感谢您的回复。我已通过 npm install -g typescript@2.6.2 全局安装。我检查了文件夹 c:\program files (x86)\Microsoft SDKs\TypeScript。我看到有 1.8、2.3 和 2.6 的文件夹。因此,看来 SDK 已正确安装。
    猜你喜欢
    • 2022-12-28
    • 2018-10-25
    • 1970-01-01
    • 2019-05-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多