请看下面的编辑
我使用了以下包作为我的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(与“node”的定义冲突)。
除了删除\appdata中的文件夹之外,是否有可能告诉vs应该使用哪些@type?
对我来说,打字稿的整体整合不是很清楚。
MSBube是否识别现有的TSCONTIONJSON?或者我需要在项目文件as seen here中配置它吗?
编辑
我刚刚注意到我实际上在编辑一个.js文件。
一旦我把扩展到TS,每一个警告和错误都消失了。
在将扩展名从.js改为.ts之前,我还遇到了许多类型脚本错误(比如ts2307,找不到模块“@angular/core”)。
文件刚刚进行了导入(从节点)
import * as fs from 'fs';
有人能解释我为什么会犯这个错误吗?
为什么js文件会导致200多个typescript错误(有些甚至与上面的导入无关)?
编辑2
发生的错误是
TS2403—后续变量声明必须具有相同的类型。
TS2300-重复标识符“propertykey”
TS4090-找到“node”的冲突定义(释义:在
./node_modules
和C:\Users\MyUser\AppData\Local\Microsoft\TypeScript\node_modules\@types
中找到所有错误都是由
d.ts
或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
文件引起的。正如bowden kelly所指出的,这似乎是导致这个问题的原因似乎是ms放在这里的定义文件
C:\Users\MyUser\AppData\Local\Microsoft\TypeScript\node_modules\@types
,只要我在./node_modules
中安装自己的定义文件,vs在编辑js文件时就会找到这两个定义(如果存在)。所以解决办法要么是:
用微软的方式
以某种方式排除ms目录
最佳答案
安装到C:\Users\MyUser\AppData\Local\Microsoft\TypeScript\node_modules\@types
的定义文件仅用于提供javascript intellisense。如果您的项目或配置了tsconfig.json
的项目中有typescript,则需要获取自己的.d.ts
文件并将其存储在项目中。幸运的是,这个项目附带了您已经在package.json
中需要的所有.d.ts文件,一个简单的npm install
应该可以做到这一点。
我可以告诉您,与“node”冲突的定义可能是由于node.d.ts文件有两个副本。如果您自己手动安装了一个,在项目中包含的一个之上,那么您将得到这些错误。
我不确定javascript文件中出现的ts错误。你能给我看一个错误的例子和导致错误的代码片段吗?
另外,您可能不希望与msbuild集成,因为此项目已安装为使用npm scripts+webpack运行。你应该看看这个插件:https://marketplace.visualstudio.com/items?itemName=MadsKristensen.NPMTaskRunner
最后,我认为您不想进入node.js Web项目。对于这个项目,您最好在vs中打开文件夹,只需使用package.json
并导航到根文件夹。这将为您提供所需的所有编辑工具,而无需任何msbuild或vs项目结构。考虑到这个项目并不是为了利用这些特性中的任何一个而设计的,现在忽略它们可能会更容易。
请告诉我你还遇到了什么问题。
关于javascript - Visual Studio 2017:js文件导致许多 typescript 错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42906339/