Wie laden signalr.js im webpack innen Winkel 2
Bekomme ich immer die Meldung:
$.hubConnection ist nicht eine Funktion
Fehler: jQuery wurde nicht gefunden. Bitte stellen Sie sicher jQuery verwiesen wird, bevor
der SignalR-JavaScript-client-Datei. tröstende out "$" und "jquery" ist
undefined.
Was muss ich tun, um signalr arbeiten mit webpack?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Saubere Lösung: verwenden Sie die expose-loader !!
innerhalb Ihres Anbieters.ts
in Ihrem webpack.config.ts
Erklärung:
Die jquery.signalR.js Skript ist in der Tat nicht geschrieben, wie ein UMC-Modul. Das es standardmäßig nicht zu belastbar sein, indem webpack. Es nicht erforderlich, jquery, geht aber davon aus, dass Jquery Leben auf die globalen Variablen-Fenster.jQuery. Wir können diese Arbeit machen im webpack durch den Import der jquery-Modul mit der expose-loader. Dieser loader wird stellen Sie sicher, dass der exportierte Wert von jquery, ausgesetzt ist, die Globale jQuery var. So dass zum laden der signalr.js Skript als das nächste Modul.
Auch, wenn Sie möchten, um Sie später zu verwenden, signalr, indem er $, müssen Sie auch verwenden die provideplugin für das jquery-Modul. im inneren webpack.config.js
$.connection.myHub
da der hub proxies werden nicht geladen. Wie kann ich erreichen, das mit webpack?Dank an hannes und dieser guide von Microsoft ich es geschafft, SignalR arbeiten mit Webpack und Typoskript mit dem ES6-syntax.
Bevor:
Nach:
webpack.config.js:
Pakete.json:
NB: Sie müssen auch entfernen, laden
<script src="/signalR/hubs"/>
da es nicht mehr benötigt wird.Extedning Hannes Neukermans s Antwort:
Mit webpack.ProvidePlugin stellt jQuery zur Verfügung globaly, aber es auch lassen, jQuery-Einstieg in Mitte, wo es nicht sollte. Zum Beispiel, es wrapps einige Ereignisse mit jQuery-Objekt (KeyboardEvent => jQuery.Event).
Also besser nicht zu verwenden webpack.ProvidePlugin an alle, und verwenden Sie die expose-loader nur statt.
In Ihrem webpack.config.js:
Haben Sie immer noch importieren, signalR und jQuery in Ihren Anbieter.ts: