AOT:错误:Uncaught(承诺):TypeError:无法读取未定义的属性'$'
我正尝试在AOT生产版本中发布一个Angular4前端项目。经过长时间的角色cli成功构建AOT模式后,我终于可以发布前面发布的“build prod - not false”前端,并查看AOT和JIT之间的区别。不幸的是,当web应用程序在浏览器中启动时,我遇到了错误。
Error: Uncaught (in promise): TypeError: Cannot read property '$' of undefined
该错误似乎与jQuery(因为$)有关,我在app.module.ts中有。
'import * as $ from 'jquery';'
但我意识到,这是不是jQuery的都怎么我仍然得到,即使我完全在我的应用程序删除jQuery的引用,并使用相同的错误有关。
注:我只收到此错误,如果前端与“刺--aot真”,而不是当应用程序被内置“刺--aot假”
更新建:我还意识到我在项目中使用$符号具有低于定义的SignalR服务。
export class SignalrWindow extends Window {
$: any;
}
不知道发生了什么事。任何帮助都是极好的!
创建一个新的定义文件(例如:definitions.d.ts),并添加以下代码:
interface SignalrWindow extends Window {
$: any;
}
declare var window: SignalrWindow ;
时,我得到了“无法找到名字$”的信息是的,这对我很有用! – dmc
一种方式使用jquery而不是安装依赖项是将jquery脚本添加到您的index.html
文件并创建一个define
变量。
的index.html
<script type="text/javascript" src="jquery-2.1.1.min.js"></script>
app.module.ts
declare var $: any;
这种方法的缺点是,智能感知不会与工作定义变量。
当我按照你的建议做了 – dmc
并且代码看起来像...? – Dekel
您是否安装jquery并键入jquery –
@sachilaranawaka:是的,我已经完成了npm安装jquery --save和npm install @ types/jquery --save – dmc