Javascript angular mock和node.js在“上运行grunt typescript时发生冲突”;模块";全局变量

Javascript angular mock和node.js在“上运行grunt typescript时发生冲突”;模块";全局变量,javascript,node.js,angularjs,gruntjs,typescript,Javascript,Node.js,Angularjs,Gruntjs,Typescript,我正在使用grunt typescript,它正在编译我所有的*.ts文件。我同时使用Angle-mocks.d.ts和node.d.ts,但是我在实际的ts文件中分别引用了它们。我只在jasmine测试中使用angular Mock,我在server.ts文件中使用node。 我遇到的问题是,即使它们是单独引用的,但当它们在grunt typescript中编译时,似乎会以某种方式将它们转储到一起,从而导致它们对“模块”的两个不同定义最终发生冲突。如果我使用tsc(它引用node.d.ts)自

我正在使用grunt typescript,它正在编译我所有的*.ts文件。我同时使用Angle-mocks.d.ts和node.d.ts,但是我在实际的ts文件中分别引用了它们。我只在jasmine测试中使用angular Mock,我在server.ts文件中使用node。
我遇到的问题是,即使它们是单独引用的,但当它们在grunt typescript中编译时,似乎会以某种方式将它们转储到一起,从而导致它们对“模块”的两个不同定义最终发生冲突。如果我使用tsc(它引用node.d.ts)自行构建server.ts文件,它构建得很好。这两个文件永远不会重合,所以对我来说,这并不是一个真正的冲突,只是它变成了grunt typescript中的一个,它似乎在编译时将所有的*.d.ts文件转储在一起。我认为这是因为它将我所有的*.ts文件构建在一起,因此最终将*.d.ts文件拉到一个公共空间中

我得到的错误是:

c:/node/bills/typings/node/node.d.ts(37,13): 错误TS2134:后续变量声明必须具有相同的类型。变量“module”的类型必须为“(…modules:any[])=>any”,但此处的类型为“{exports:any;require(id:string):any;id:string;filename:string;loaded:boolean;parent:any;children:any[];}”

角度模拟.d.ts模块定义:

declare var module: (...modules: any[]) => any;
declare var module: {
    exports: any;
    require(id: string): any;
    id: string;
    filename: string;
    loaded: boolean;
    parent: any;
    children: any[];
}
节点d.ts模块定义:

declare var module: (...modules: any[]) => any;
declare var module: {
    exports: any;
    require(id: string): any;
    id: string;
    filename: string;
    loaded: boolean;
    parent: any;
    children: any[];
}

这最终对我有用。我将test.ts文件拆分为单独的typescript运行。这导致它不能同时运行我的测试声明和运行时声明。这些声明分开后,模块环境声明不再冲突

    typescript: {
        options:
        {
            target: 'es5', //or es3
            base_path: '',
            sourcemap: true,
            declaration: false
        },
        server: {
            src: ['*.ts']
        },
        test: {
            src: ['test/*.ts']
        }
    },

    watch: {
        files: ['*.ts', 'test/*.ts'],
        tasks: ['typescript:server', 'typescript:test']
    }

这是一个已知的问题

它被做成了一个


解决方法是使用
angular.mock.module
而不是
module

而不仅仅是解决方法!角度模拟的打字定义建议您始终使用
angular.mock.module