【发布时间】:2017-08-11 21:25:37
【问题描述】:
请看下面的编辑
我使用以下包作为我的 VS 项目的基础 -> https://github.com/AngularClass/angular2-webpack-starter
在 Visual Studio 代码中一切正常,然后我尝试将其转换为 Visual Studio 2017 项目(node.js web)
现在出现了一些问题
VS 似乎将 TypeScript 定义安装到一个特殊文件夹 C:\Users\MyUser\AppData\Local\Microsoft\TypeScript\node_modules\@types
此外,我在 package.json 中包含了 @types/node,这导致了相应的 node_modules 文件夹。
现在 VS 抱怨错误代码 TS4090(“节点”的定义冲突)。
除了删除\AppData中的文件夹来告诉VS它应该使用哪些@types之外,还有没有可能?
TypeScript 的整个集成对我来说并不是很清楚...... MSBuild 是否识别现有的 tsconfig.json?还是我必须在项目文件as seen here 中配置它?
编辑
我刚刚注意到我实际上正在编辑一个 .js 文件。 一旦我将扩展名更改为 .ts,每个警告和错误都会消失。 在将扩展名从 .js 更改为 .ts 之前,我还遇到了许多打字稿错误(例如 TS2307,找不到模块“@angular/core”)
文件刚刚进行了导入(从节点)
import * as fs from 'fs';
谁能解释我为什么会出现这个错误? 为什么一个 JS 文件会导致 200 多个打字稿错误(有些甚至与上面的导入无关)?
EDIT2 发生的错误是
- TS2403 - 后续变量声明必须具有相同的类型。
- TS2300 - 重复标识符“PropertyKey”
- TS4090 - 发现“节点”的定义冲突(释义:在
./node_modules和C:\Users\MyUser\AppData\Local\Microsoft\TypeScript\node_modules\@types中发现
所有错误都是由C:\Users\MyUser\AppData\Local\Microsoft\TypeScript\node_modules\@types或C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TypeScript\lib.es6.d.ts中的d.ts文件引起的
就像 Bowden Kelly 指出的那样,这似乎是导致此问题的原因似乎是 MS 放在这里 C:\Users\MyUser\AppData\Local\Microsoft\TypeScript\node_modules\@types 的定义文件,只要我在 ./node_modules 中安装我自己的定义文件,VS 就会找到这两个定义(如果存在)编辑 JS 文件时。
所以解决方案是:
- 按照 MS 方式进行操作
- 以某种方式排除 MS 目录
【问题讨论】:
-
下面的两个答案都有帮助,但我必须选择一个,我选择了第一个发布的答案。但是,如果您遇到相同的问题,请查看两个答案。 (而不是尝试找到解决方案,直到你决定像我一样回到 VS Code ......)
标签: javascript typescript npm visual-studio-2017