TypeScript 2 - 无法识别@types

时间:2016-12-28 10:31:08

标签: typescript

由于法律障碍,我们将node_modules放在另一个文件夹中(我们称之为“外部”),因此来自TS docs的后续句子不适用:“任何封闭文件夹的node_modules / @类型中的包被视为可见;具体而言,这意味着包装在./node_modules/@types/,../node_modules/@types/,../../node_modules/@types/,等等“

我相信是这样,因为我的文件夹位于./external/node_modules而不是./node_modules。

这可以以某种方式工作吗?我也尝试过这种方式:

"compilerOptions": {
    "module": "amd",
    "target": "es5",
    "sourceMap": true,
    "removeComments": true,
    "allowJs": false,
    "pretty": true,
    "experimentalDecorators": true,
    "typeRoots": ["./external/node_modules/@types"]
}

文件夹结构:

- external
-- node_modules
--- @types
- tsconfig.json

现在当我尝试导入角度时,我收到“无法找到模块角度”错误消息。

1 个答案:

答案 0 :(得分:1)

听起来编译器实际上找不到该模块 编译器正在为它寻找模块和定义文件,因此仅指定typeRoots是不够的,您可能还需要在compiler options中设置baseUrl

  

用于解析非相对模块名称的基目录

正如Module Resolution baseUrl section中所写:

  

使用baseUrl是使用AMD模块的应用程序中的常见做法   在运行时将模块“部署”到单个文件夹的加载器。   这些模块的源可以存在于不同的目录中,但是   构建脚本将把它们放在一起。

     

设置baseUrl通知编译器在哪里可以找到模块。所有模块   具有非相对名称的导入被假定为相对于   的baseUrl。

修改

我从来没有参加过你的场景,所以这更像是猜测...... 但是看一下有关模块解析的文档中描述的步骤:

  

非相对导入将首先遵循Node.js解析逻辑   查找文件,然后查找适用的文件夹。所以进口{b   源文件/src/moduleA.ts中的“moduleB”将导致   以下查找:

     
      
  1. /root/src/node_modules/moduleB.ts
  2.   
  3. /root/src/node_modules/moduleB.tsx
  4.   
  5. /root/src/node_modules/moduleB.d.ts
  6.   
  7. /root/src/node_modules/moduleB/package.json(如果它指定了“typings”属性)
  8.   
  9. /root/src/node_modules/moduleB/index.ts
  10.   
  11. /root/src/node_modules/moduleB/index.tsx
  12.   
  13. /root/src/node_modules/moduleB/index.d.ts

  14.   
  15. /root/node_modules/moduleB.ts

  16.   
  17. /root/node_modules/moduleB.tsx
  18.   
  19. /root/node_modules/moduleB.d.ts
  20.   
  21. /root/node_modules/moduleB/package.json(如果它指定了“typings”属性)
  22.   
  23. /root/node_modules/moduleB/index.ts
  24.   
  25. /root/node_modules/moduleB/index.tsx
  26.   
  27. /root/node_modules/moduleB/index.d.ts

  28.   
  29. /node_modules/moduleB.ts

  30.   
  31. /node_modules/moduleB.tsx
  32.   
  33. /node_modules/moduleB.d.ts
  34.   
  35. /node_modules/moduleB/package.json(如果它指定了“typings”属性)
  36.   
  37. /node_modules/moduleB/index.ts
  38.   
  39. /node_modules/moduleB/index.tsx
  40.   
  41. /node_modules/moduleB/index.d.ts
  42.   

它似乎不应该在./external/...

中查找