TypeScript - Visual Studio 2015 Intellisense无法查找模块

时间:2017-04-11 18:04:08

标签: visual-studio typescript visual-studio-2015

我在Visual Studio 2015中遇到TypeScript intellisense时出现问题。当我尝试从Nuget上的打字切换到使用npm安装它们时,问题就出现了。我在node_modules/@types中拥有我需要的一切,但智能感知并没有找到输入,说它无法解析模块。该项目构建没有错误,都使用Visual Studio的构建和命令行的tsc。

我目前的猜测是问题在于TypeScript I&m; m的使用版本与打字的版本相比,因为打开文件时打包文件中存在智能感知错误。例如,我使用npm为React(v。^ 15.4.2)安装了typings(v。^ 15.0.21)。当我打开已安装的index.d.ts文件时,收到很多错误:

// Type definitions for React v15.0
// Project: http://facebook.github.io/react/
// Definitions by: ...
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2

export = React;
export as namespace React;

在前两行例如,我得到:

  • 除非' - 模块'否则无法编译模块。提供标志...(整个第一行)

  • 预期的声明或声明。 (第二行,出口下)

  • 找不到姓名'为'。 (在as下)
  • &#39 ;;'预期。 (在命名空间下)

你明白了,这些通过文件继续。我已尝试以下方法来解决此问题:

  • 切换到使用tsconfig文件而不是VS打字稿工具。
  • 有3位同事试用他们的电脑(两位智能感知工作,第三位遇到同样的问题)
  • 删除.suo文件
  • 清除智能感知缓存
  • 更新TypeScript工具和Visual Studio。当我开始时,我在VS2015 Update 1上运行了一个非常旧版本的TypeScript。我现在在VS2015 Update 3上使用TypeScript 2.2.2。我已经从开发人员命令提示符和包管理器控制台验证了TypeScript的版本。
  • 手动添加指向打字文件的///<reference />标记。这样做成功地将tsx html元素(例如<div>标签)解析为JSX.IntrinsicElements类型,但React模块仍然无法解析,可能是因为上面列出的错误。
  • 使用tsconfig中的typeroots元素直接指向@types文件夹。我已经根据一位同事的推荐将其删除了,这是其中两位智能感知工作者之一。
  • 编辑.csproj文件TypeScript部分。我将TypeScript工具版本更改为2.2,并将模块解析选项更改为Node,node和NodeJs,如下所示:https://github.com/Microsoft/TypeScript/issues/7568

这是我的tsconfig.json文件:

{
    "compileOnSave": true,
    "compilerOptions": {
        "sourceMap": true,
        "noImplicitAny": false,
         "module": "commonjs",
         "target": "es5",
         "jsx": "react"
    },
    "exclude": [ "./__Redesign/node_modules", "./__Redesign/jspm_packages" ],
    "include": [
        "./__Redesign/node_modules/@types",
        "__Redesign/app/**/*.ts",
        "__Redesign/app/**/*.tsx"
    ]
}

我的tsconfig位于站点根目录中,package.json文件位于名为__Redesign的文件夹中,同时还包含node_modules文件夹。这就是为什么我认为我可能需要在tsconfig中明确指出编译器的类型。

此时我已经没有线索追逐,任何新的想法都值得赞赏。感谢。

1 个答案:

答案 0 :(得分:2)

经过一些实验后,我尝试在我之前下载的TypeScript 2.2.2安装程序上运行修复,这解决了这个问题。我不确定它是如何解决问题的,但至少它有效。