2016-12-22 3 views
38

Ich readed wie Arbeit TypeScript module resolution.Eine Deklarationsdatei für Modul 'Modulname' konnte nicht gefunden werden. '/path/to/modul-name.js' hat implizit einen 'any' Typ

Ich habe das folgende Repository: ts-di. Nach einer Verzeichnisstruktur kompiliert wird, wie folgt:

├── dist 
│   ├── annotations.d.ts 
│   ├── annotations.js 
│   ├── index.d.ts 
│   ├── index.js 
│   ├── injector.d.ts 
│   ├── injector.js 
│   ├── profiler.d.ts 
│   ├── profiler.js 
│   ├── providers.d.ts 
│   ├── providers.js 
│   ├── util.d.ts 
│   └── util.js 
├── LICENSE 
├── package.json 
├── README.md 
├── src 
│   ├── annotations.ts 
│   ├── index.ts 
│   ├── injector.ts 
│   ├── profiler.ts 
│   ├── providers.ts 
│   └── util.ts 
└── tsconfig.json 

In meinem package.json ich "main": "dist/index.js" schrieb.

In Node.js alles funktioniert gut, aber Typoskript:

import {Injector} from 'ts-di'; 

konnte keine Deklarationsdatei für das Modul 'ts-di' gefunden. '/path/to/node_modules/ts-di/dist/index.js' hat implizit einen 'any'-Typ.

Und doch, wenn ich den Import folgt, dann funktioniert alles:

import {Injector} from '/path/to/node_modules/ts-di/dist/index.js'; 

Was mache ich falsch?

Antwort

32

Dieses Gefühl, wenn Sie für zwei Tage suchen und es so finden: entfernen Sie einfach .js von "main": "dist/index.js" in package.json und alles funktioniert gut!

"main": "dist/index", 

UPD: diese Antwort relativ, wenn Sie Ihr eigenes npm Paket haben, wenn nicht - my answer below sehen.

Und wenn oben Antwort nicht gelöst Ihr Modul importieren, versuchen Sie einfach hinzufügen typings in package.json:

"main": "dist/index", 
"typings": "dist/index", 

Natürlich hier Ordner dist - es ist, wo das Modul die Dateien gespeichert sind.

+0

Sie danken für Kommen Sie zurück und posten Sie Ihre eigenen Antworten :) – swyx

+0

Ich kam zu Ihren Fragen und Ihre Antwort viele Male diese letzten Tage und ich möchte hinzufügen, dass was ich vermisste war, diese Typen in einer .d.ts-Datei zu deklarieren, in meinem Fall, installiert n Ode-Module, die ohne Typen kamen (und ich konnte nicht explizit ihre Typen installieren) begann zu arbeiten, indem sie in dieser Datei deklarieren, indem Sie "Modul 'MYDesiredModule' deklarieren – Juan

65

zwei weitere Möglichkeiten, wenn ein Modul nicht verkaufen - nur versuchen, seine installieren von @types:

npm install -D @types/module-name 

Oder, wenn errored installieren - versuchen import-require umschreiben:

// import * as yourModuleName from 'module-name'; 
const yourModuleName = require('module-name'); 
+5

Wenn Sie nicht finden können Name erforderlich führen Sie dies für TypeScript 2.0:' npm install @ types/node --save-dev' – Ogglas

Verwandte Themen