2016-03-04 19 views
6

Biorąc pod uwagę następujące struktury katalogów:Dlaczego nie można znaleźć modułów wyszukiwania TypeScript zainstalowanych w 'node_modules'?

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

Podczas wbudowanych funkcji wyjściowych poprawnie; komenda tsc twierdzi, że nie może rozwiązać modułu lodash kiedy użyć dowolnego z poniższych:

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

Wewnątrz mojego „” tsconfig.json pliku mam włączone następujące rzeczy:

... 

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

... 

Ale mimo to nadal nie znajduje żadnego z modułów, które są zainstalowane przy użyciu npm.

Czy brakuje mi czegoś, co jest wymagane, aby TypeScript znalazł te moduły?

Rozumiem, że bez pliku definicji TypeScript TypeScript nie jest w stanie zapewnić dodatkowych kontroli typów; jednak z pewnością powinno to być domyślnie ustawione na prawo typu any?

+1

Sprawdź, czy masz Typescript 1,6 lub wyższy. Oto [dobra dyskusja] (https://medium.com/@mweststrate/how-to-create-strongly-typed-npm-modules-1e1bda23a7f4#.ci86154ph) tego, jak "działało" przed 1.6 i jak to działa po. –

Odpowiedz

5

Ponieważ Lodash nie ma pliku definicji w folderze node_modules/lodash, to nie będzie działać. Będziesz musiał pobrać go za pomocą typowania lub użyć deklaracji otoczenia zamiast importu:

declare var _: any; 

Dla node.js trzeba by użyć:

var _ = require('lodash');