2017-07-08 57 views
-1

當我升級我的角度應用角4以下事情發生了:升級到4角破門實現外部JS的依賴

Uncaught ReferenceError: Keycloak is not defined 
     at Function.webpackJsonp.../../../../../src/app/services/auth/auth.service.ts.AuthService.init (auth.service.ts:22) 
     at Object.../../../../../src/main.ts (main.ts:9) 
     at __webpack_require__ (bootstrap 1f6d90b…:54) 
     at Object.1 (polyfills.ts:19) 
     at __webpack_require__ (bootstrap 1f6d90b…:54) 
     at webpackJsonpCallback (bootstrap 1f6d90b…:25) 
     at main.bundle.js:1 

我已經在index.html文件中刪除我的腳本標記,而是包括他們進入角cli.json文件:

declare let Keycloak: any; 

static init(): Promise<any> { 
    let keycloakAuth: any = new Keycloak("app/js/keycloak/keycloak.json"); 

    // other code here 
} 
0:

"scripts": [ 
    "./app/js/keycloak/keycloak.js", 
    "./app/js/wavesurfer/wavesurfer.min.js", 
    "./bower_components/bootstrap/dist/css/bootstrap.min.css", 
    "./app/js/bootstrap/bootstrap.min.js", 
    "./app/js/bootstrap/jquery.min.js" 
    ] 

我現在下面的代碼得到一個錯誤

我做錯了什麼? JavaScript文件的導入或此對象的聲明。

隨着Angular 2的完美運作。

讓我知道是否需要提供更多信息來解決此問題。

回答

1

我會安裝Keycloak JS以及its typing通過NPM:現在

npm install --save keycloak-js @types/keycloak-js 

,您可以導入它作爲填充工具庫 - 您的應用程序初始化之前應加載庫。

./src/polyfills.ts,加

import 'keycloak-js' // <- use the keycloak foldername in ./node_modules folder 

因爲我們還安裝了類型,你應該甚至刪除declare let Keycloak線,因爲打字稿將使用@types/keycloak-js包提供強類型。最後,從.angular-cli.json文件的腳本數組中刪除keycloak行。

您現在應該可以在項目中使用Keycloak。

+0

感謝您的回答,我會盡快嘗試! – Veslav

+0

我認爲它工作,我現在唯一的錯誤是「zone.js:643未處理的承諾拒絕:clientId失蹤;區域:;任務:Promise.then;值:clientId失蹤」。 這可能是錯誤版本的類型,我會盡力解決它。 – Veslav