我正在尝试使用Angular 6构建Web扩展,因此我发现了web-ext-types来声明Web Extension API的类型。
因此,仅尝试创建一个新的角度项目,将tsconfig.json更新为包含node_modules/web-ext-types
似乎就可以了,因为我可以看到browser
是Visual Studio Code中公认的类型。到目前为止一切顺利。
现在,我想通过运行ng build --aot
来构建项目,并且出现以下错误:error TS2304: Cannot find name 'browser'
。
我在做什么错了?
tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2017",
"typeRoots": [
"node_modules/@types",
"node_modules/web-ext-types"
],
"lib": [
"es2017",
"dom"
],
"paths": {
"myLibrary": [
"projects/my-library"
],
"myLibrary/*": [
"projects/my-library/*"
]
}
}
}
tsconfig.app.json:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/app",
"module": "es2015",
"types": []
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}
也来自angular.json
:
"tsConfig": "projects/extension/tsconfig.app.json",
创建了一个github存储库以显示完整的代码来再现我的问题:https://github.com/benk79/angular-web-ext-base
答案 0 :(得分:2)
这里的问题是tsconfig.app.json
中的设置:
"compilerOptions": {
"types": []
},
这告诉Angular CLI运行不带类型包的TypeScript编译器,从而覆盖typeRoots
中的tsconfig.json
设置。这也解释了为什么您的IDE知道browser
名称空间,而Angular CLI却不知道,因为IDE仅使用tsconfig.json
配置,而不使用tsconfig.app.json
中专用于Angular的配置CLI。只需删除types
中的tsconfig.app.json
设置即可解决问题。