0

Fable を使用して F# で React コンポーネントを作成しようとしていますが、必要なライブラリを参照するのに問題があります。私が得ているコンパイルエラーは次のとおりです。

  • 名前空間「React」が定義されていません。(「オープン」ステートメント)
  • タイプ PureStatelessComponent が定義されていません。

これが私のコードです

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>

これらのコンパイル エラーを解決するにはどうすればよいですか?

4

1 に答える 1

1

Fable.Browser.Dom で行ったように、代わりに NuGet バージョンを使用することをお勧めします。– マーク・パティソン

正しい!.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 を参照しているとは思いません。

于 2020-05-22T04:12:49.637 に答える