为什么TypeScript可以找到安装在' node_modules'中的模块?

时间:2016-03-04 19:46:18

标签: typescript npm tsconfig

给出以下目录结构:

{project}/
  |-- node_modules/
  |    |-- lodash
  |-- src/
  |    |-- index.ts
  |-- lib/ (output)
  |    |-- index.js
  |    |-- index.d.ts
  |-- package.json
  |-- tsconfig.json

虽然内置输出功能正常; tsc命令在我使用以下任何一项时抱怨它无法解析lodash模块:

import _ from "lodash";
import _ = require("lodash");
import * as _ from "lodash";

在我的' tsconfig.json'文件我包括以下内容:

...

"target": "es6",
"sourceMap": true,
"module": "commonjs",
"moduleResolution": "node",

...

但是尽管如此,它仍然没有找到使用npm安装的任何模块。

我是否遗漏了使TypeScript找到这些模块所需的东西?

我意识到没有TypeScript定义文件,TypeScript无法提供额外的类型检查;但是,当然这些应该默认为any类型吗?

1 个答案:

答案 0 :(得分:6)

由于lodash在node_modules / lodash文件夹中没有定义文件,因此无效。您必须使用typings下载它或使用环境声明而不是导入:

declare var _: any;

对于node.js,您必须使用:

var _ = require('lodash');