Signature_pad: SignaturePad funktioniert nicht mit Create React App

Erstellt am 26. Mai 2017  ·  11Kommentare  ·  Quelle: szimek/signature_pad

Beim Versuch, Signatur_Pad mit Webpack 2 zu verwenden, wurde ein Fehler gefunden!

Mein Projekt verwendet die neueste Version der Create React App . Die Verwendung von SignaturePad mit früheren Versionen von Create React App funktionierte wie erwartet, aber beim Upgrade auf Webpack 2 trat ein Fehler auf. Daher bin ich ziemlich zuversichtlich, dass dies speziell mit den neuen Import- / Exportmechanismen von Webpack 2 zu tun hat.

Wie ist das aktuelle Verhalten?

Beim Versuch, eine neue Instanz von SignaturePad zu erstellen, stürzt die App mit einem bestimmten Webpack-Fehler ab:

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

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

Was ist das erwartete Verhalten?

Die Instanz sollte wie erwartet ohne Absturz erstellt werden.

Welche Versionen von SignaturePad und welcher Browser / welches Gerät sind von diesem Problem betroffen?

Dies scheint sowohl in Chrome als auch in Safari zu geschehen.

bug

Hilfreichster Kommentar

Eine bessere Problemumgehung besteht darin, die js-Datei direkt zu importieren

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

Alle 11 Kommentare

@ Taylorlapeyre Danke für den Bericht. Es ist wirklich seltsam, weil es so aussieht, als würde anstelle des eigentlichen JS-Codes ein Pfad zu einer Datei zurückgegeben, d. H.
this: __WEBPACK_IMPORTED_MODULE_1_signature_pad___default.a entspricht this: "/static/media/signature_pad.2ceae229.mjs" .

Ich werde versuchen herauszufinden, was los ist, aber wenn jemand eine Idee hat und eine PR mit einem Fix erstellen könnte, wäre das großartig.

@taylorlapeyre Ich habe herausgefunden, was los ist und ich denke, es ist tatsächlich ein Fehler in react-create-app , obwohl ich ihn auch hier leicht beheben könnte. Das Problem ist, dass Webpack 2 die ES6-Version lädt, die sich in der Datei signature_pad.mjs , aber ich denke, die Webpack-Konfiguration in react-create-app weiß nicht, wie Dateien mit der Erweiterung .mjs - Deshalb wird ein Dateiname zurückgegeben.

@szimek ahh, das macht Sinn. Ich denke, dass das Update in diesem Fall wahrscheinlich in der Create React App sein sollte. Möchten Sie dort eine PR machen? Ich kann es auch nehmen, wenn Sie mir einen Ausgangspunkt geben, um von 🙂 zu gehen

Nur zur Veranschaulichung - die Problemumgehung für uns bestand einfach darin, die Datei signature_pad.js direkt in unser Verzeichnis src kopieren. Sobald wir das getan haben, konnten wir es wie erwartet importieren.

Vielen Dank für die schnelle Antwort, @szimek. Ich arbeite mit @taylorlapeyre ... Ich habe gerade das Repo gegabelt und den Erstellungsprozess geändert, um eine .js -Datei anstelle der .mjs -Datei zu schreiben. Ich kann bestätigen, dass dies in unserem Create-React-App-Kontext völlig funktioniert! Aber ja, hört sich an ihrem Ende eher nach einem Problem an, da mjs eine Sache ist.

Noch einmal, riesige Requisiten an wären sie sehr daran interessiert, mjs obwohl ... woof.

Wir könnten einen Patch erstellen, der den Build umd unter einem anderen Namen exportiert, z. B. signature_pad.umd.js und signature_pad.js für den Modul-Build verwendet. Ich bin mir jedoch nicht sicher, welchen Einfluss dies auf Ihre aktuelle Distribution haben wird. Ich bin mir auch nicht sicher, wie häufig dieser Anwendungsfall im Moment ist ... Lassen Sie uns in jedem Fall wissen, wie wir Ihnen helfen können!

Ja, es kann jedoch sinnvoll sein, diese Datei einfach in signature_pad.es6.js umzubenennen, um sicherzustellen, dass sie überall unterstützt wird. Das Umbenennen von dist-Dateien erfordert jedoch erneut eine Hauptversion, sodass dies möglicherweise eine Weile warten muss. Ich muss ein anderes Problem im Zusammenhang mit dem Standard- und dem benannten Export untersuchen, für das ebenfalls eine Hauptversion erforderlich ist (Nr. 240). Vielleicht mache ich sie beide gleichzeitig.

Eine bessere Problemumgehung besteht darin, die js-Datei direkt zu importieren

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

Vielen Dank für die Problemumgehung. Der Import von signature_pad/dist/signature_pad.js funktioniert für uns atm.

Es gibt eine offizielle Empfehlung von Facebook, wie damit umgegangen werden könnte.
Grundsätzlich wird vorgeschlagen, dass ES6 erst in einigen Jahren als vollständig unterstützt betrachtet werden kann. Daher sollten Bibliotheken ES5-Code veröffentlichen. Siehe diesen Abschnitt in der Readme-Datei:

https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#npm -run-build-failed-to-minify

Ich dachte, ich würde es dich wissen lassen.

Ich habe es noch nicht ausprobiert, aber create-react-app v2 sollte auch Code in node_modules kompilieren - https://github.com/facebook/create-react-app/pull/3776. Die Version mjs (derzeit in der Beta-Version) von signature_pad keine mjs -Erweiterung mehr, daher sollte sie mit create-react-app v2 funktionieren, obwohl es großartig wäre, dies zu bestätigen.

Bitte öffnen Sie dieses Problem erneut, wenn bei Verwendung von CRA 2 und der neuesten Beta-Version dieser Bibliothek weiterhin ein Problem auftritt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

c2ofh picture c2ofh  ·  7Kommentare

rmmackay picture rmmackay  ·  7Kommentare

auam88 picture auam88  ·  4Kommentare

Emmark picture Emmark  ·  4Kommentare

erangaapp picture erangaapp  ·  8Kommentare