错误TS2503:找不到名称空间'WebMidi'

时间:2019-06-28 10:24:11

标签: angular web-midi

我有一个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依赖项?高贵族...

1 个答案:

答案 0 :(得分:0)

试试看是否有效

在您的tsconfig.app.json中

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "types": ["webmidi"] // add here
  },
  "exclude": ["test.ts", "**/*.spec.ts"]
}