【发布时间】:2017-01-18 08:35:42
【问题描述】:
我想在我的 Angular2-Application 中包含 jQuery 和 SignalR,并使用 webpack 连接所有内容。
因此我通过 npm 安装了 jQuery。
package.json
"dependencies": {
// ...
"jquery": "2.1.4",
// ...
},
文件和文件夹已正确安装。
我现在在我的 vendor.ts 中定位这些文件,让 webpack 找到并包含它们:
import 'jquery';
import 'bootstrap/dist/js/bootstrap.js';
import '../../bower_components/signalr/jquery.signalR';
然后 webpack 获取这些文件并将它们连接起来。我可以在我的 vendor.js 中看到这一点。那里有 jQuery。还有 jquery signalR-File。
我的 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"]
})
]
}
像这样加载到我的索引中:
<script src="js/polyfills-2eba52f6.bundle.js"></script>
<script src="js/vendor-2eba52f6.bundle.js"></script>
<script src="js/app-2eba52f6.bundle.js"></script>
但是当我尝试在我的 angular2 组件中使用它时:
// ...
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/');
// ...
}
//...
我总是收到这样的信息
$.hubConnection 不是函数
错误:没有找到 jQuery。请确保之前引用了 jQuery SignalR 客户端 JavaScript 文件。
安慰出“$”和“jquery”是未定义的。
如何访问 webpack 中的 singalr-Function?
BR Tenoda
【问题讨论】:
-
不,还没有。但我会试试的。谢谢你。如果我在 index.html 中明确包含 jQuery,一切都会按预期工作......但我会尝试提出的解决方案......
-
好吧,那也没用。在我的 webpack.config 中添加了 `{ test: require.resolve("jquery"), loader: "expose?$!expose?jQuery" },` 并没有这样做。然后我尝试在我的 vendor.ts 中添加
import "jQuery",这也不起作用...... -
你能在 github 上分享你的项目或最小副本吗?
-
这里是这个分支的副本github.com/FabianGosebrink/…
标签: jquery angular webpack signalr