npm - De ce TypeScript nu poate găsi modulele care sunt instalate în 'node_modules'?


Având următoarea structură de directoare:

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

Deși codul compilat funcționează corect; comanda tsc se plânge că nu poate rezolva modulul lodash atunci când folosesc oricare dintre următoarele:

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

În fișierul meu 'tsconfig.json' am inclus următoarele lucruri:

...

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

...

Dar în ciuda acestui fapt, tot nu găsește niciunul dintre modulele care sunt instalate folosind npm.

Îmi scapă ceva care este necesar pentru ca TypeScript să găsească aceste module?

Îmi dau seama că fără un fișier de definiție TypeScript, TypeScript nu poate oferi verificări suplimentare de tip; totuși, sigur acestea ar trebui să fie setate implicit la tipul any, nu?

Răspuns #1

Deoarece lodash nu are un fișier de definiție în folderul node_modules/lodash, asta nu va funcționa. Va trebui să îl descarci folosind typings sau să folosești o declarație ambient în loc de un import:

declare var _: any;

Pentru node.js ar trebui să folosești:

var _ = require('lodash');