LoginSignup
2
3

More than 5 years have passed since last update.

VSCode で TypeScript 書いてるときに aws-sdk が cannot find module になる件

Last updated at Posted at 2017-12-26

最近 Flowtype から TypeScript に乗り換えました。

主に VSCode で書いてるんですが、

2017-12-26 (3).png

こういうエラーが出る件について。

TypeScript のコンパイラは通るので、たぶん VSCode の問題なのかなと思ってます。

VSCode と TypeScript とで依存解決の仕組みが違うんでしょうか。

とりあえず tsconfig.json にこのように書くと直りました。

{
    ...
    "files": [
        "node_modules/aws-sdk/index.d.ts",
        "index.ts"
    ],
    ...
}

TypeScript サーバーを再起動するか VSCode を再起動することで反映されます。

index.ts はアプリケーションのメインなので適宜変えてください。

TSLint と両立しない問題

で、先のように変えると今度は TSLint を tslint --fix --project tsconfig.json 'index.ts' 'src/**/*' みたいに実行している場合に src/**/*tsconfig.jsonfiles に存在しないため正常にリントできません。

files ではなく include で設定すれば TSLint は問題ないのですが、また aws-sdk が cannot find module になるというループに陥ります。(なぜ files でなければならないのか :rage:

ツラいですが、TypeScript のための tsconfig.json と、TSLint のための tsconfig.lint.json を作って、TSLint の実行を tslint --fix --project tsconfig.lint.json 'index.ts' 'src/**/*' のようにすることで解決しています。

tsconfig.json には先のように files 指定を含み、tsconfig.lint.json にはそれを含めず CLI オプションを使います。


@types に登録のあるライブラリでも、ライブラリ自体が declaration を提供している場合でも、同様の問題は起きていないのでなぜ aws-sdk だけなのかは分かりません。index.d.ts ではなく aws-sdk.d.ts じゃないと解決できないとかそんな感じでしょうか。

もっとスマートな対応方法があればどなたか教えてください。

アップデートで直ることを期待してます。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3