Javascript AOT:Error:Uncaught(承诺中):TypeError:cannotreadproperty'$';未定义的

Javascript AOT:Error:Uncaught(承诺中):TypeError:cannotreadproperty'$';未定义的,javascript,jquery,angular,angular2-aot,Javascript,Jquery,Angular,Angular2 Aot,我试图在AOT生产构建中发布一个Angular4前端项目。在让angular cli在aot模式下成功构建了数小时之后,我终于能够发布以前使用“build prod--aot false”发布的前端,并查看aot和JIT之间的差异。不幸的是,当webapp在浏览器中启动时,我遇到了以下错误 Error: Uncaught (in promise): TypeError: Cannot read property '$' of undefined 这个错误似乎与jQuery有关(因为我在app.

我试图在AOT生产构建中发布一个Angular4前端项目。在让angular cli在aot模式下成功构建了数小时之后,我终于能够发布以前使用“build prod--aot false”发布的前端,并查看aot和JIT之间的差异。不幸的是,当webapp在浏览器中启动时,我遇到了以下错误

Error: Uncaught (in promise): TypeError: Cannot read property '$' of undefined
这个错误似乎与jQuery有关(因为我在app.module.ts中有$)

'import * as $ from 'jquery';' 
但我意识到它根本与jQuery无关,因为即使我完全删除了应用程序中的jQuery引用和用法,我仍然会遇到同样的错误

注意:只有在前端是用“prod--aot true”构建的情况下,我才会遇到这个错误,而不是在应用程序是用“prod--aot false”构建的情况下

更新:我还意识到我在项目中有信号服务,它使用$symbol的定义如下

export class SignalrWindow extends Window {
    $: any;
}

不知道发生了什么事。任何帮助都会很棒

使用jquery而不是安装依赖项的一种方法是将jquery脚本添加到
index.html
文件中,并创建一个
define
变量

index.html

<script type="text/javascript" src="jquery-2.1.1.min.js"></script>

这样做的缺点是,IntelliSense将无法使用定义变量。

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

interface SignalrWindow extends Window {
    $: any;
}

declare var window: SignalrWindow ;

代码看起来像?您是否为安装了jquery并键入了jquery@sachilaranawaka:是的,我已经完成了npm安装jquery——保存和npm安装@types/jquery--save@Dekel,不确定要显示哪个代码,因为我不确定哪个代码正在崩溃:)我有一个很大的app.module.ts。从jquery导入*作为$是我在app.module.ts中能想到的唯一一行,但这个错误并不能告诉你代码中的某些地方你有
东西。$
,而且
东西
未定义的
…当我按照你的建议做的时候,我在ng构建中得到了“找不到名称$”。是的,这对我很有效!
interface SignalrWindow extends Window {
    $: any;
}

declare var window: SignalrWindow ;