Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

最近 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 じゃないと解決できないとかそんな感じでしょうか。

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

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away