AOT:错误:未捕获(承诺):TypeError:无法读取属性' $'未定义的

时间:2017-09-15 12:47:40

标签: javascript jquery angular angular2-aot

我正在尝试在AOT生产版本中发布Angular4前端项目。经过长时间的角度cli成功建立aot模式后,我终于发布了以前发布的前端" build prod --aot false"并看到AOT和JIT之间的区别。不幸的是,当webapp在浏览器中启动时,我遇到了以下错误。

Error: Uncaught (in promise): TypeError: Cannot read property '$' of undefined

该错误似乎与我在app.module.ts中的jQuery(因为$)有关。

'import * as $ from 'jquery';' 

但是我意识到它并不是jQuery相关的因为即使我在我的应用程序中完全删除了jQuery引用和用法,我仍然会得到相同的错误。

注意:如果前端是用" prod --aot true"构建的,那么我只会收到此错误。但不是当应用程序使用" prod --aot false"

构建时

更新:我也意识到我在项目中有SignalR服务,其定义使用$符号。

export class SignalrWindow extends Window {
    $: any;
}

不确定发生了什么。任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

创建一个新的定义文件(例如:definitions.d.ts)并添加以下代码:

int number = int.Parse(new string(textBox1.Text.Where(char.IsDigit).ToArray()));

答案 1 :(得分:0)

使用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;

这样做的缺点是,IntelliSense不能与 define 变量一起使用。