2017-09-15 78 views
0

我正嘗試在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; 
} 

不知道發生了什麼事。任何幫助都是極好的!

+2

並且代碼看起來像...? – Dekel

+0

您是否安裝jquery並鍵入jquery –

+0

@sachilaranawaka:是的,我已經完成了npm安裝jquery --save和npm install @ types/jquery --save – dmc

回答

1

創建一個新的定義文件(例如:definitions.d.ts),並添加以下代碼:

interface SignalrWindow extends Window { 
    $: any; 
} 

declare var window: SignalrWindow ; 
+0

時,我得到了「無法找到名字$」的信息是的,這對我很有用! – dmc

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; 

這種方法的缺點是,智能感知不會與工作定義變量。

+0

當我按照你的建議做了 – dmc

相關問題