Visual Studio 2017:Node_modules中的TypeScript编译错误

时间:2017-07-18 13:09:45

标签: visual-studio angular typescript

尝试构建一个Angular应用程序我在node_modules文件夹中获取了typescript文件的complie错误。

例如:

  

TS2420:Class'CdkTable'错误地实现了接口   'CollectionViewer'。

CdkTable位于@ angular / cdk / typings / table / table.d.ts

我的工具版本:

npm -v:5.0.3

node -v:v8.1.4

tsc -v:版本2.2.3

我的tsconfig.json:

{
  "compilerOptions": {
    "moduleResolution": "node",
    "target": "es5",
    "sourceMap": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "skipDefaultLibCheck": true,
    "lib": [ "es6", "dom" ],
    "types": [ "node" ]
  },
  "exclude": [ "bin", "node_modules" ],
  "atom": { "rewriteTsconfig": false }
}

请注意,该项目可在其他计算机上编译。

1 个答案:

答案 0 :(得分:0)

我假设您的tsc可执行文件是通过npm安装的,并且全局安装。

检查已安装的Visual Studio的TypeScript SDK版本。它应该位于大致为C:\Program Files (x86)\Microsoft SDKs\TypeScript的文件夹中。确保此版本是最新版本(或至少与全局安装的TypeScript版本相同)。

还要检查环境变量,以查看路径中是否有不同的版本。 Visual Studio的MSBuild进程使用MSBuild TypeScript tasks,它将从SDK安装中获取TypeScript。这解释了命令行(使用全局安装的tsc)和Visual Studio输出的输出差异。

此外,known issues使用带有Visual Studio项目的tsconfig。我知道它应该得到完全的支持,但是仍有很多人仍在报告我所研究的问题。您可能希望删除tsconfig,以便在右键单击项目并选择属性时使用TypeScript选项卡。

或者,您可以尝试设置rootDir编译器选项,以尝试挑出实际需要编译的TypeScript文件的目录。我知道excludes应该已经阻止了这一点,但同样,Visual Studio可能会以某种方式在tsconfig上打嗝。