zu. Ich möchte jQuery und SignalR in meine Angular2-Anwendung integrieren und alles mit dem Webpack verbinden.Schließen Sie jQuery in Angular2 mit webpack ein und greifen Sie darauf von der Komponente
Ich habe daher jQuery über Npm installiert.
package.json
"dependencies": {
// ...
"jquery": "2.1.4",
// ...
},
Dateien und Ordner werden korrekt installiert.
ich zielen diese Dateien jetzt in meinem vendor.ts webpack zu bekommen zu finden und schließen sie:
import 'jquery';
import 'bootstrap/dist/js/bootstrap.js';
import '../../bower_components/signalr/jquery.signalR';
Und webpack bekommt diese Dateien und Drähte sie. Ich kann das in meinem vendor.js sehen. jQuery ist dort präsent. Auch das jquery-SignalR-File.
Mein webpack.config:
var webpack = require("webpack");
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: {
"vendor": "./wwwroot/app/vendor",
"polyfills": "./wwwroot/app/polyfills",
"app": "./wwwroot/app/boot"
},
output: {
path: __dirname,
filename: "[name]-[hash:8].bundle.js"
},
resolve: {
extensions: ['', '.ts', '.js', '.html']
},
devtool: 'source-map',
module: {
loaders: [
{
test: /\.ts/,
loaders: ['ts-loader'],
exclude: /node_modules/
},
{
test: /\.html$/,
loader: 'html'
},
{
test: /\.css$/,
loader: 'raw'
}
]
},
plugins: [
new webpack.ProvidePlugin({
jQuery: 'jquery',
$: 'jquery',
jquery: 'jquery'
}),
//new webpack.optimize.DedupePlugin(),
new webpack.optimize.CommonsChunkPlugin({
name: ["app", "vendor", "polyfills"]
})
]
}
in meinem Index Geladen wie:
<script src="js/polyfills-2eba52f6.bundle.js"></script>
<script src="js/vendor-2eba52f6.bundle.js"></script>
<script src="js/app-2eba52f6.bundle.js"></script>
Aber wenn ich versuche, es in meiner angular2 Komponente zu verwenden wie:
// ...
declare var jQuery:any;
declare var $:any;
@Injectable()
export class MySignalRService {
private connection;
constructor() {
this.connection = $.hubConnection(CONFIGURATION.baseUrls.server + 'signalr/');
jQuery.hubConnection(CONFIGURATION.baseUrls.server + 'signalr/');
// ...
}
//...
I immer erhalten Sie die Nachricht, dass
$.hubConnection is not a function
Error: jQuery was not found. Please ensure jQuery is referenced before the SignalR client JavaScript file.
trösten "$" und "jquery" ist undefined.
Was kann ich tun, um auf die Singalr-Funktion im Webpack zuzugreifen?
BR Tenoda
Haben Sie versucht, http://stackoverflow.com/questions/29080148/expose-jquery-to-real-window-object-with-webpack? – yurzui
Nein, noch nicht. Aber ich werde es versuchen. Vielen Dank. Wenn ich jQuery explizit in index.html einschließe funktioniert alles wie erwartet ... Aber ich werde die vorgeschlagene Lösung versuchen ... – Tenoda
Okay, das hat auch nicht funktioniert. ' {test: require.resolve (" jquery "), loader:" expose? $! Expose? JQuery "},' zu meiner webpack.config hinzugefügt, die es nicht getan hat. THen ich trief, um hinzuzufügen "Import" jQuery "" in meinem vendor.ts, die auch nicht funktioniert ... – Tenoda