Webpack 2でsignature_padを使おうとすると、バグが見つかりました。
私のプロジェクトでは、最新バージョンのCreate ReactAppを使用してい
現在の動作は何ですか?
SignaturePad
新しいインスタンスを作成しようとすると、アプリがクラッシュし、特定のWebpack関連のエラーが発生します。
期待される動作は何ですか?
インスタンスは、クラッシュすることなく、期待どおりに作成する必要があります。
この問題の影響を受けるSignaturePadのバージョンとブラウザ/デバイスはどれですか?
これはChromeとSafariの両方で発生するようです。
@taylorlapeyreレポートありがとうございます。 実際のJSコードを返す代わりに、ファイルへのパスを返すように見えるので、それは本当に奇妙です。
これ: __WEBPACK_IMPORTED_MODULE_1_signature_pad___default.a
はこれに等しい: "/static/media/signature_pad.2ceae229.mjs"
。
私は何が悪いのかを見つけようとしますが、誰かが何か考えを持っていて、修正を加えたPRを作成できれば、それは素晴らしいことです。
@taylorlapeyre何が問題なのかを理解しました。実際には、 react-create-app
バグだと思いますが、ここでも簡単に修正できます。 問題は、Webpack 2がsignature_pad.mjs
ファイルにあるES6バージョンをロードすることですが、 react-create-app
Webpack構成は、 .mjs
拡張子のファイルを処理する方法を知らないと思います-それがファイル名を返す理由です。
@szimekああ、それは理にかなっています。 この場合、修正はおそらくCreate ReactAppにあるはずだと思います。 あそこにPRしたいですか? 出発点を教えていただければ、私もそれを取ることができます🙂
念のために言っておきますが、回避策は、 signature_pad.js
ファイルをsrc
ディレクトリに直接コピーすることsignature_pad.js
。 それを行うと、期待どおりにインポートすることができました。
@szimekさん、これについての迅速な返信をありがとうございました。 @taylorlapeyreと私の仕事は...だけでは、レポをフォークして書き出すために、ビルドプロセスを変更.js
の代わりに、ファイル.mjs
ファイルを。 create-react-appコンテキストで完全に機能することを確認できます! しかし、はい、mjsは問題であるため、彼らの側ではもっと問題のように聞こえます。
繰り返しになりますが、これをすでにCRAに持ち込んだmjs
サポートすることにあまり興味がないようですが... woof 。
umd
ビルドを別の名前(たとえばsignature_pad.umd.js
でエクスポートし、モジュールビルドにsignature_pad.js
を使用するパッチを作成できます。 ただし、現在のディストリビューションにどの程度の影響があるかはわかりません。 また、現時点でこのユースケースがどれほど一般的かわからない...いずれにしても、私たちがどのようにお手伝いできるかをお知らせください。
ええ、しかし、それがどこでもサポートされていることを確認するために、単にこのファイルの名前をsignature_pad.es6.js
に変更することは理にかなっているかもしれません。 ただし、繰り返しになりますが、distファイルの名前を変更するにはメジャーリリースが必要なため、しばらく待つ必要がある場合があります。 デフォルトと名前付きエクスポートに関連する別の問題を確認する必要があります。これもメジャーリリース(#240)が必要です。 たぶん私はそれらを両方同時に行うでしょう。
より良い回避策は、jsファイルを直接インポートすることです
import SignaturePad from 'signature_pad/dist/signature_pad.js';
回避策をありがとうございます。 signature_pad/dist/signature_pad.js
からインポートするとatmで動作します。
これをどのように処理できるかについては、Facebookから公式の推奨事項があります。
基本的に、ES6は今後数年間は完全にサポートされているとは見なされないため、ライブラリはES5コードを公開する必要があることを示唆しています。 readmeの次のセクションを参照してください。
https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#npm -run-build-fails-to-minify
私はあなたに知らせたいと思った。
まだ試していませんが、 create-react-app
v2はnode_modules
でもコードをコンパイルする必要があります-https://github.com/facebook/create-react-app/pull/3776。 signature_pad
のv3(現在ベータ版)はmjs
拡張子を使用しなくなったため、 create-react-app
v2で動作するはずですが、確認するのは素晴らしいことです。
CRA 2とこのライブラリの最新のベータ版を使用しても問題が解決しない場合は、この問題を再度開いてください。
最も参考になるコメント
より良い回避策は、jsファイルを直接インポートすることです
import SignaturePad from 'signature_pad/dist/signature_pad.js';