2016-03-04 14 views
6

Data la seguente struttura di directory:Perché TypScript non può trovare i moduli installati in "node_modules"?

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

Mentre le funzioni di uscita costruiti correttamente; il comando tsc lamenta che non può risolvere il modulo lodash quando uso una delle seguenti:

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

Dentro il mio file 'tsconfig.json' ho incluso le seguenti cose:

... 

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

... 

ma nonostante questo non sta ancora trovando nessuno dei moduli installati usando npm.

Mi manca qualcosa che è necessario per fare in modo che TypeScript trovi questi moduli?

Mi rendo conto che senza un file di definizione TypeScript TypeScript non è in grado di fornire controlli di tipo aggiuntivi; tuttavia, sicuramente questi dovrebbero essere predefiniti per il tipo any giusto?

+1

Assicurarsi di avere tipografico 1.6 o più alto. Ecco una [buona discussione] (https://medium.com/@mweststrate/how-to-create-strongly-typed-npm-modules-1e1bda23a7f4#.ci86154ph) di come ha "funzionato" prima di 1.6 e come funziona dopo. –

risposta

5

Poiché lodash non ha un file di definizione nella cartella node_modules/lodash, non funzionerà. Dovrete scaricare utilizzando tipizzazioni o utilizzare una dichiarazione ambiente, invece di un import:

declare var _: any; 

Per node.js che avrei dovuto usare:

var _ = require('lodash'); 
Problemi correlati