为什么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
类型的权利?
答
由于lodash在node_modules/lodash文件夹中没有定义文件,所以不起作用。你必须使用它分型下载或使用环境声明,而不是进口:
declare var _: any;
对于Node.js的,你不得不使用:
var _ = require('lodash');
请确保您有打字稿1.6或更高。这是一个[良好的讨论](https://medium.com/@mweststrate/how-to-create-strongly-typed-npm-modules-1e1bda23a7f4#.ci86154ph)它如何“工作”1.6之前,以及它如何后工作。 –