2016-10-28 59 views
4

我有一個Angular2項目,我需要導入一個JavaScript文件用於我的打字稿。Typescript'不是一個模塊'錯誤

我在app/js/d3gantt.js中有一個JavaScript文件,其中包含一個函數gantt = function()

gantt = function() { 
    //Does lots of stuff 
    return gantt; 
}; 

我再有一個定義文件看起來像這樣同一個文件夾名爲d3gannt.d.ts:

declare module 'd3Gantt' { 
    export module d3Gantt { 
     export function gantt(): any; 
    } 
} 

然後,我引用它在我的組件作爲 import * as d3Gantt from '../app/js/d3gantt';

但是,我收到錯誤消息,說明File 'c:/Projects/RepackLog/RepackLog/RepackLog/app/js/d3gantt.d.ts' is not a module

我是否缺少需要的東西來提取我的文件正確嗎?

感謝,

+0

你需要在你的** app/js/d3gantt.js **上輸出'export gantt;'** –

+0

OK我把它放在哪裏,語法是什麼?香港專業教育學院把我的js文件有問題刪除功能的內容,以便他們不會妨礙 – DaRoGa

回答

1

正如上述評論中提及了@FabioAntunes,你就必須出口gantt在你的d3gantt.js文件本身上。 準確的語法將是

export gantt = function() { 
    //Does lots of stuff 
    return gantt; 
}; 

無需在其他地方聲明它。 有關導出模塊的進一步說明,請參閱本文(Typescript es6 import module "File is not a module error")。

1

申報模塊如下:

declare module 'd3Gantt' { 
    export function gantt(): any;  
} 

然後導入模塊:import * from 'path to your module file'import * as d3 from 'path to your module file'

+0

不,我仍然得到錯誤 – DaRoGa

+0

更改文件名爲'd3gantt.ts'並再次檢查 – ranakrunal9

+0

的JavaScript文件? – DaRoGa