【发布时间】:2017-07-20 08:17:15
【问题描述】:
我想根据 webpack 配置定义一个全局常量。
因此,我在 DefinePlugin 中添加了常量 DEBUG。
然后应该在某些代码中使用所述常量,在我的例子中是在服务中。
在执行npm run build 时,我收到一个错误,即找不到名称DEBUG,所以我添加了一个custom-typings.d.ts 解决了这个问题。
但是在运行测试时我仍然收到错误。
问题是,我如何定义自定义类型以便 karma 也使用它们?或者换一种说法,在运行测试时如何使用custom-typings.d.ts?
./webpack.config.js
[...]
new webpack.DefinePlugin({
DEBUG: JSON.stringify(true)
}),
[...]
./src/app/services/SomeService
[...]
@Injectable()
export class SomeService {
[...]
private shouldStart() {
return !(DEBUG);
}
}
./src/custom-typings.d.ts
declare var DEBUG: boolean;
./src/test.ts
[...]
TestBed.initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting()
);
// load all specs in ./src .
const context = (require as any).context('./', true, /\.spec\.ts$/);
context.keys().map(context);
./src/tsconfig.json
{
"compilerOptions": {
"baseUrl": "",
[...]
},
"files": ["test.ts"],
"include": ["**/*.spec.ts", "**/*.d.ts"]
}
运行npm test时抛出错误
ERROR in [at-loader] ./src/app/some/some.service.ts:112:14
TS2304: Cannot find name 'DEBUG'.
(这个错误发生在构建过程中,在我有 custom-typings.d.ts 之前)
编辑:添加了澄清路径以及更多信息
【问题讨论】:
标签: angular webpack karma-runner