Javascript angular mock和node.js在“上运行grunt typescript时发生冲突”;模块";全局变量
我正在使用grunt typescript,它正在编译我所有的*.ts文件。我同时使用Angle-mocks.d.ts和node.d.ts,但是我在实际的ts文件中分别引用了它们。我只在jasmine测试中使用angular Mock,我在server.ts文件中使用node。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中编译时,似乎会以某种方式将它们转储到一起,从而导致它们对“模块”的两个不同定义最终发生冲突。如果我使用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
。