我想根据webpack配置定义一个全局常量。
因此,我将常量DEBUG
添加到DefinePlugin。
然后应该在某些代码中使用所述常量,在我的情况下,在服务内部。
执行npm run build
时收到错误,无法找到名称DEBUG
,因此我添加了custom-typings.d.ts
来解决此问题。
但是在运行测试时我仍然会收到错误。
问题是,我如何定义自定义类型,因此业力也在使用它们?或者说不同,我怎样才能在运行测试时使用custom-typings.d.ts
?
./ webpack.config.js
[...]
new webpack.DefinePlugin({
DEBUG: JSON.stringify(true)
}),
[...]
./ SRC /应用/服务/ SomeService
[...]
@Injectable()
export class SomeService {
[...]
private shouldStart() {
return !(DEBUG);
}
}
./ SRC /定制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之前,这个错误发生在构建过程中)
编辑:添加了澄清路径以及更多信息
答案 0 :(得分:0)
要回答您的具体项目,我必须查看custom-typings.d.ts文件在项目文件树中的位置。
要使* .d.ts文件起作用,它需要位于主入口点.ts文件的旁边。如果你在tsconfig.json中使用baseUrl
配置,它应该在你定义的路径上。
如果文件位于正确的路径中,它应自动包含在您的业力构建中。