https://qiita.com/uki00a/items/817442b00dc8f3b5696dの続き。
deno.landからダウンロードしたモジュールについては、deno_ls_pluginを導入することで、「An import path cannot end with a '. ts'extension...」のエラーを回避できるようになった。
しかし、demを使用してdenopkg.comからdinatraをインストールしようと試みたところ、上記ページと同様の事象が発生してしまった。
$ dem add https://denopkg.com/syumai/dinatra@v0.7.1
前提
Vim等のエディタを利用する場合を想定しています。
vscodeを利用する場合は、vscode-denoプラグインを導入することで解決すると思います。
解決策
typescript-deno-pluginを導入し、tsconfig.jsonで読み込むように設定することで解決する。
$ yarn add -D typescript-deno-plugin typescript
{"compilerOptions":{"target":"esnext","module":"esnext","baseUrl":".","paths":{"deno":["./types/deno.d.ts"],"https://*":["../../../.cache/deno/deps/https/*"],"http://*":["../../../.cache/deno/deps/http/*"]},"plugins":[{"name":"typescript-deno-plugin"}]}}
導入後、以下のように型定義を解決できるようになった。
原因
demによって作成された./vendor/https/denopkg.com/syumai/dinatra/mod.ts
を確認してみると、「An import path cannot end with a '. ts'extension...」のエラーが発生していた。
export*from'https://denopkg.com/syumai/dinatra@0.7.1/mod.ts';
試しに、~/.cache/deno/deps/https/denopkg.com/syumai/dinatra@0.7.1
ディレクトリを確認してみたところ、mod.ts
というファイルは存在せず、代わりにmod.ts.headers.json
というファイルが存在した。
内容は下記の通り。
{"redirect_to":"https://raw.githubusercontent.com/syumai/dinatra/0.7.1/mod.ts"}
このmod.ts.headers.json
が正しく解決されていないことが原因であった。
typescript-deno-pluginは、*.headers.json
ファイルが存在する場合、redirect_to
の参照先に従って、型定義を解決する処理が行われているため、このプラグインを導入することで問題が解決した。