2016-12-22 11 views
38

私はどのように仕事をしましたか?TypeScript module resolutionモジュール 'module-name'の宣言ファイルが見つかりませんでした。 '/path/to/module-name.js'は暗黙的に 'any'型を持っています

私は以下のリポジトリを持っています:ts-di。次のようなディレクトリ構造をコンパイルした後 は次のとおりです。

私のpackage.jsonで
├── 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 

私は"main": "dist/index.js"を書きました。 Node.jsのがすべてで

が正常に動作しますが、活字体:

import {Injector} from 'ts-di'; 

は、モジュール 'TSジ' の宣言ファイルが見つかりませんでした。 '/path/to/node_modules/ts-di/dist/index.js'は暗黙的に 'any'型です。

そして私のインポートは、以下の場合は、まだ、その後、すべてが動作します:

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

私が間違って何をしているのですか?

答えて

32

あなたが2日間見て、このように感じると、その感覚はを"main": "dist/index.js"からpackage.jsonに削除しても問題ありません。

"main": "dist/index", 

UPD:いない場合は、独自のNPMのパッケージを持っている場合は、この回答の相対 - my answer belowを参照してください。

そして、上記の答えが解決しない場合は、あなたのモジュールをインポートし、ちょうどpackage.jsontypingsを追加してみてください。もちろん

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

を、ここではフォルダdist - あなたのモジュールのファイルを保存する場所それはです。

+0

はありがとうございました戻ってあなた自身の答えを掲示してください:) – swyx

+0

私はこれらの最後の日あなたの質問とあなたの答えに何度も来て、私が欠けていたものが.d.tsファイルでそれらのタイプを宣言することでした、私の場合、nをインストールタイプなしで来たodeモジュール(そして私はそのタイプを明示的にインストールできませんでした)は、 "declare module 'MYDesiredModule'を書いてそのファイルで宣言して作業を始めました – Juan

65

モジュールがあなたのものではない別の2つの方法 - ちょうど@typesからそのをインストールしてみてください。

インストールエラーが発生した場合
npm install -D @types/module-name 

または、 - requireimportを書き換えてみてください。

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

名前を見つけることができない場合は、TypeScript 2.0でこれを実行します:' npm @ types/node --save-dev'をインストールしてください – Ogglas

関連する問題