【发布时间】:2017-02-24 06:18:23
【问题描述】:
我克隆了以下内容: https://github.com/AngularClass/angular2-webpack-starter
我想使用 jquery 和 bootstrap。 我愿意:
npm install jquery bootstrap --save
然后我去 vendor.ts 添加导入..
import 'jquery';
import 'bootstrap/dist/js/bootstrap';
import 'bootstrap/dist/css/bootstrap.min.css';
然后我去 webpack.common.js 并添加到“plugins:[...]”:
new webpack.ProvidePlugin({
jQuery: 'jquery',
$: 'jquery',
jquery: 'jquery'
})
为了测试这一点,我修改了 home.component.html 并在其中一个 div 中添加了一个 id="testdiv"。
在 home.component.ts 中,我添加了“$('#testdiv').html('Jquery Works')”。
当我 npm run start 时,我收到一堆错误:
error_handler.js:46 EXCEPTION: Uncaught (in promise): ReferenceError: $ is not definedErrorHandler.handleError @ error_handler.js:46next @ application_ref.js:298schedulerFn @ async.js:89SafeSubscriber.__tryOrUnsub @ Subscriber.js:223SafeSubscriber.next @ Subscriber.js:172Subscriber._next @ Subscriber.js:125Subscriber.next @ Subscriber.js:89Subject.next @ Subject.js:55EventEmitter.emit @ async.js:81onError @ ng_zone.js:123onHandleError @ ng_zone_impl.js:62ZoneDelegate.handleError @ zone.js:336Zone.runGuarded @ zone.js:242_loop_1 @ zone.js:508drainMicroTaskQueue @ zone.js:515ZoneTask.invoke @ zone.js:437
error_handler.js:51 ORIGINAL STACKTRACE:ErrorHandler.handleError @ error_handler.js:51next @ application_ref.js:298schedulerFn @ async.js:89SafeSubscriber.__tryOrUnsub @ Subscriber.js:223SafeSubscriber.next @ Subscriber.js:172Subscriber._next @ Subscriber.js:125Subscriber.next @ Subscriber.js:89Subject.next @ Subject.js:55EventEmitter.emit @ async.js:81onError @ ng_zone.js:123onHandleError @ ng_zone_impl.js:62ZoneDelegate.handleError @ zone.js:336Zone.runGuarded @ zone.js:242_loop_1 @ zone.js:508drainMicroTaskQueue @ zone.js:515ZoneTask.invoke @ zone.js:437
error_handler.js:52 Error: Uncaught (in promise): ReferenceError: $ is not defined
我该如何解决这个问题?我还尝试使用以下内容修改 webpack.common.js:
new webpack.ProvidePlugin({
'window.jQuery': 'jquery',
'window.$': 'jquery',
})
也没有成功...
如果我转到我的 index.html 页面...如果我添加:
<script src="http://code.jquery.com/jquery-3.1.1.min.js"></script>
它有效,但我想避免这样做......
【问题讨论】:
-
我认为 typescript 与没有任何 typescript 定义的库兼容...我想避免执行打字安装...如果可能的话,因为我想使用的大多数 javascript 库都做没有打字。
-
要在不输入的情况下使用它,您仍然必须将其作为代码中的对象提供给 TypeScript 的编译器。该问题也涵盖了这样做,大约低于接受的三个答案。
-
我不明白你为什么不安装类型,这是 TypeScript 的一半,如果你不想要类型,Angular2 可以用 JS 编写。
-
如果你想在没有打字稿定义的情况下使用,只需编写 declare var $ : any;并使用$,无论如何我建议按照gelliott181所说的那样安装类型;)