2015-08-24 32 views
7

Sto tentando di utilizzare un helper di sessione chiamato connect-session-knex che è abbastanza oscuro da non avere una definizione di dattiloscritto pubblicata. Così, quando provo a compilare il mio progetto nodo dattiloscritto, ottengo l'errore,Come posso importare una libreria nel nodo senza una definizione Typescript/TSD?

error TS2307 Cannot find module 'connect-session-knex' 

C'è un modo per ignorare TS solo per questo modulo? Come posso importarlo senza il TSD? So che knex ha un tsd, ma il wrapper no. Lo sto chiedendo da un punto di vista generico su cosa fare con le librerie senza definizioni di tipo.

Per chi cerca: Compilazione dattiloscritto quando non ha tsd. Tsd mancante. Senza tsd.

+0

Vedi https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html, soprattutto le importazioni non tipizzate –

risposta

12

errore TS2307 Impossibile trovare il modulo 'connect-session-knex' C'è un modo per ignorare TS solo per questo modulo? Come posso importarlo senza il TSD?

Utilizzare var/require anziché import/require. vale a dire

var csk = require('connect-session-knex'); 

Nota si dovrebbe avere node.d.ts incluso per require da dichiarare.

anche: https://basarat.gitbooks.io/typescript/content/docs/node/nodejs.html

5

Un altro suggerimento è quello di iniziare si possiede .d.ts file come un file di definizione vuota ed esportare il modulo. Quindi se vuoi ottenere intellisense sul modulo puoi aggiungere delle definizioni.

ad es. connect-session-knex.d.ts:

 

// declare module 
declare module "connect-session-knex" { 

} 
+0

Come si può collegare con la mia node_module file di definizione? –

+0

Non capisco bene la domanda @SebastianBusek – Quango

+0

Ad esempio con 'connect-session-knex'; Posso creare il file connect-session-knex.d.ts e poi aggiungere usare "import * come connectSessionKnex da" connect-session-knex "' ma come il transcripter di TS saprà che connect-session-knex.d.ts è compatibile con modulo connect-session-knex nella directory node_modules? –