問題タブ [npm-link]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reactjs - ReactJS:シンボリックリンクされたコンポーネントのインポートエラー:モジュールの解析に失敗しました:予期しないトークン:このファイルタイプを処理するには適切なローダーが必要な場合があります
私は React コンポーネント ライブラリを作成しています。他のプロジェクトで使用したいのは、多くのオーバーヘッド (bit、create-react-library、generact など) や公開なしです。npm install ../shared_lib
のシンボリックリンクとしてプロジェクトに追加するために使用したいと思い/node_modules
ます。このコマンドは、シンボリック リンクをプロジェクト node_modules に追加します。私のshared_libには、次のテストがexport default
あり<div></div>
ます:
私が直面している問題は、コンポーネントを作業中のプロジェクトにインポートするときの次のエラーです。
エラー:
shared_lib
jsx を使用してファイル以外から何かをインポートすると (文字列や関数など)、正常に動作します。
編集:アプリケーション webpack には、オブジェクトの symlinks prop が false に設定されている解決があります。
編集:以下の回答 ( https://stackoverflow.com/a/60980492/3006493 )のソリューションを適用した後、後で symlinks prop を true に戻しました。shared_lib
ソリューションが機能してコンポーネントをレンダリングするために、false に設定する必要はありませんでした。
私のアプリのローダー:
編集:以下の回答のソリューションを適用すると、ローダーは次のようになります。
アプリの現在の .babelrc 設定 (.babelrc を削除して、同じ結果で package.json にプリセットを含めてみました):
**編集:以下の回答の解決策を適用した後、babelプリセットを元に戻すことになりましたpackage.json.
これに対する解決策を見つけるためにしばらく調査しましたが、どうやらwebpackにはシンボリックリンクされた反応コンポーネントのバンドルに問題がありますか? 私は create-react-app を使用していません。 それで、プロジェクトにインポートする前に、shared_lib をバンドルして、何が起こるかを確認しようとしました。これが最終的なwebpack構成です(他の構成も試しました):
そして、shared_lib の package.json
同じ方法でコンポーネントをインポートしようとすると:
console.log が返されますundefined
。
私のアプリのライブラリファイルへのパスは問題ありshared_lib/dist/shared_lib.js
ません.export default 1
console.log(TryTest)
App.js
1
libraryTarget プロパティを に変更してみましshared_lib/webpack.config
たlibraryTarget: 'commonjs'
。の結果は にconsole.log(TryTest)
なり{shared_lib: undefined}
ます。
誰もこれに遭遇したことがありますか?
reactjs - React Typescript プロジェクト間でライブラリの 1 つを共有する最も簡単な方法は何ですか?
React プロジェクト間で共通のデータ オブジェクトまたはユーティリティ クラスを共有したいとします (ローカルのみ)。たとえば、複雑な文字列またはデータ構造の操作を実行するユーティリティ クラスです。
それを行う最良の方法はどれですか?ライブラリ用に別の NPM モジュールを作成し、それを各プロジェクトにリンクする必要がありますか?
を使用するいくつかのソリューションを見てきcreate-app-rewired
ましたが、それらにはいくつかのカスタムが必要であり、getBabelLoader
そのような単純なユースケースには多すぎるようです。