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

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

问题描述:

考虑到以下目录结构:为什么TypeScript找不到安装在'node_modules'中的模块?

{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

请确保您有打字稿1.6或更高。这是一个[良好的讨论](https://medium.com/@mweststrate/how-to-create-strongly-typed-npm-modules-1e1bda23a7f4#.ci86154ph)它如何“工作”1.6之前,以及它如何后工作。 –

由于lodash在node_modules/lodash文件夹中没有定义文件,所以不起作用。你必须使用它分型下载或使用环境声明,而不是进口:

declare var _: any; 

对于Node.js的,你不得不使用:

var _ = require('lodash');