2016-10-28 47 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