Signature_pad: SignaturePadがCreateReactAppで機能しない

作成日 2017年05月26日  ·  11コメント  ·  ソース: szimek/signature_pad

Webpack 2でsignature_padを使おうとすると、バグが見つかりました。

私のプロジェクトでは、最新バージョンのCreate ReactAppを使用してい

現在の動作は何ですか?

SignaturePad新しいインスタンスを作成しようとすると、アプリがクラッシュし、特定のWebpack関連のエラーが発生します。

screen shot 2017-05-26 at 11 28 41 am

screen shot 2017-05-26 at 11 35 50 am

期待される動作は何ですか?

インスタンスは、クラッシュすることなく、期待どおりに作成する必要があります。

この問題の影響を受けるSignaturePadのバージョンとブラウザ/デバイスはどれですか?

これはChromeとSafariの両方で発生するようです。

bug

最も参考になるコメント

より良い回避策は、jsファイルを直接インポートすることです

import SignaturePad from 'signature_pad/dist/signature_pad.js';

全てのコメント11件

@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とこのライブラリの最新のベータ版を使用しても問題が解決しない場合は、この問題を再度開いてください。

このページは役に立ちましたか?
0 / 5 - 0 評価