我有一个Angular工作区,其中包含一个库及其测试应用程序。
projects/
├── midi-app
│ ├── browserslist
│ ├── karma.conf.js
│ ├── src
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
├── midi-app-e2e
│ ├── protractor.conf.js
│ ├── src
│ └── tsconfig.e2e.json
└── midi-lib
├── karma.conf.js
├── ng-package.json
├── package.json
├── README.md
├── src
├── tsconfig.lib.json
├── tsconfig.spec.json
└── tslint.json
我正在使用@types/webmidi
,而VSCode编辑器没有抱怨。
我还可以使用ng build midi-lib --watch
成功构建库,编译完成。
但是,当我尝试使用ng serve
命令从同一目录提供应用程序时,它失败并显示error TS2503: Cannot find namespace 'WebMidi'
错误。
它一直可以正常使用,直到昨天早上我打开笔记本电脑并尝试为应用程序提供服务时才失败。自从正常工作的前一天起,我就没有进行任何代码更改。
我尝试清理,但没有改变:
rm -fr node_modules package-lock.json
npm cache clean
npm install
这是一些配置文件。
tsconfig.json
文件:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es5",
"lib": [
"es2018",
"dom"
],
"baseUrl": "./",
"paths": {
"@app/*": ["projects/midi-app/src/app/*"],
"@lib/*": ["projects/midi-lib/src/lib/*"],
"midi-lib": [
"dist/midi-lib"
],
"midi-lib/*": [
"dist/midi-lib/*"
]
}
}
}
tsconfig-lib.json
文件:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../out-tsc/lib",
"target": "es2015",
"module": "es2015",
"moduleResolution": "node",
"declaration": true,
"sourceMap": true,
"inlineSources": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"typeRoots": [
"../../node_modules/@types"
],
"lib": [
"dom",
"es2018"
]
},
"angularCompilerOptions": {
"annotateForClosureCompiler": true,
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true,
"enableResourceInlining": true
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}
我尝试添加
"typeRoots": [
"node_modules/@types"
],
在tsconfig.json
文件中,但完全没有帮助。
我也尝试删除
"typeRoots": [
"../../node_modules/@types"
],
来自tsconfig-lib.json
文件,但仍然没有帮助。
更新:问题现在消失了,我不知道为什么。是因为我将typescript
升级到了3.2.4
吗?还是因为我从webmidi 2.3.3
文件中删除了package.json
依赖项?高贵族...
答案 0 :(得分:0)
试试看是否有效
在您的tsconfig.app.json中
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"types": ["webmidi"] // add here
},
"exclude": ["test.ts", "**/*.spec.ts"]
}