У меня есть рабочее пространство 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
? Высокий Чапарал ...