2016-12-05 56 views
1

我正在使用帶有aurelia/aurelia-cli的打字稿。我NPM安裝chart.js並把它添加到我的aurelia.json文件:Aurelia CLI無法導入chart.js TypeScript

"dependencies": [ 
     ... 
     { 
     "name": "chartjs", 
     "path": "../node_modules/chart.js/dist", 
     "main": "Chart" 
     }, 
] 

我也跑分型:

typings install dt~chart.js --global --save 

現在,我試圖將其導入我的部件

之一
import * as Chart from 'chartjs' 

但我得到的錯誤:

Cannot find module 'chartjs'. 

我也試過:

... from 'chart' 
... from 'Chart' 
... from 'Chart.js' 
... from 'chartjs' 
import * as chart ... 
import * as chartjs ... 

回答

1

我能夠讓它改變我的導入和aurelia.json文件工作。

aurelia.json

{ 
    "name": "chartjs", 
    "path": "../node_modules/chart.js/dist/Chart.min" 
}, 

import語句

import 'chartjs'; 
0

我知道chart.js之可與Aurelia路上,我們在我們的演示應用講習班的一個使用它。在演示程序中,它是這樣導入的:import Chart from 'chartjs';但是這是ES2015,而不是TypeScript。

此外,配置應該是這樣的aurelia.json

 { 
     "name": "chartjs", 
     "path": "../node_modules/chart.js/Chart.min", 
     "exports": "Chart" 
     } 
+0

是你們使用chartjs V1或V2? – Rodrigo

+0

它看起來像我有2.4.0 –

+0

那麼爲什麼需要出口屬性?我認爲這是使用全局腳本的遺留庫 – Rodrigo

1

你試過宣佈一個空模塊? e.g像index.d.ts聲明文件,添加:

declare module "chart.js"; 

我覺得這是一個導入第三方庫一個很好的起點。進一步的信息可以在這裏找到:https://www.typescriptlang.org/docs/handbook/modules.html#working-with-other-javascript-libraries

如果沒有錯誤,你可以使用普通的js chart.js函數,這意味着庫已包含,但類型沒有。

此外,如果你使用的是打字稿2.0,我認爲你應該安裝類型是這樣的:

npm install --save @types/chartjs 
+0

如果我刪除index.d.ts文件的所有內容,並添加'declare module「chart.js」;'那麼錯誤消失。你的意思是說圖書館已經包括在內,而類型沒有? – Rodrigo

+0

因此,如果你聲明一個像這樣的模塊,所有從模塊導入都將具有任何類型。您不再有任何類型檢查,但只要您已正確加載模塊,您應該可以使用js。如果該模塊尚未加載並且嘗試使用它,則會出現一堆運行時錯誤。 js庫並不總是有類型定義,所以這樣你可以使用一個普通的js庫而不需要任何typedefs。 – shusson

+0

當我像這樣聲明模塊時,Visual Studio錯誤消失了,但是當應用程序嘗試編譯時,會拋出錯誤,它找不到'chart.js',並且它使程序崩潰 – Rodrigo

相關問題