首页 > 解决方案 > 无法在 Fable 中引用 React

问题描述

我正在尝试使用 Fable 在 F# 中编写一个 React 组件,但在引用必要的库时遇到了麻烦。我得到的编译错误是:

这是我的代码

module ContactInfoComponent

open Fable.Core
open Fable.Core.JsInterop
open Fable.Import
open Fable.Import.Browser
open Fable.React
open Fable.React.Helpers


type ContactInfoProps = {
    Name : string
}

type ContactInfoComponent(initialProps) = 
    inherit PureStatelessComponent<ContactInfoProps>(initialProps)
    override this.render() = 

        div [] [ 
            str "Name: "
            input [Type "text" Id "txtName"]
        ]

这是我在 package.json 中的依赖项:

  "devDependencies": {
    "webpack": "^4.42.0",
    "webpack-cli": "^3.3.11",
    "webpack-dev-server": "^3.10.3"
  },
  "dependencies": {
    "@babel/core": "^7.8.7",
    "fable-compiler": "^2.4.18",
    "fable-loader": "^2.1.8",
    "fable-core": "^0.7.30",
    "fable-powerpack": "0.0.20",
    "fable-react": "^0.8.6",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "webpack": "^4.42.0",
    "webpack-cli": "^3.3.11",
    "webpack-dev-server": "^3.10.3"
  }
  <ItemGroup>
    <Reference Include="node_modules/fable-core/Fable.Core.dll" />
    <Reference Include="node_modules/fable-powerpack/Fable.PowerPack.dll" />
    <Reference Include="node_modules/fable-react/Fable.React.dll" />
    <PackageReference Include="Fable.Browser.Dom" Version="1.0.0" />
  </ItemGroup>

我能做些什么来解决这些编译错误?

标签: reactjsf#fable

解决方案


我建议改用 NuGet 版本,就像您对 Fable.Browser.Dom 所做的那样。——马克·帕蒂森

正确的!我通过在我的 .csproj 文件中添加 NuGet 包引用解决了这个问题:

  <ItemGroup>
    <PackageReference Include="Fable.Core" Version="3.1.5" />
    <PackageReference Include="Fable.Browser.Dom" Version="1.0.0" />
    <PackageReference Include="Fable.React" Version="6.2.0" />
    <PackageReference Include="Fable.PowerPack" Version="3.0.0" />
  </ItemGroup>
</Project>

现在我要看看是否可以从 package.config 中删除这些引用。我认为我的 F# 代码实际上并没有引用 node_modules 文件夹中的 DLL。


推荐阅读