Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

【deno】denopkg.com経由でインストールしたモジュールを利用しようとすると、「An import path cannot end with a '. ts'extension.」のエラーが発生する

$
0
0

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

Screenshot.png

前提

Vim等のエディタを利用する場合を想定しています。
vscodeを利用する場合は、vscode-denoプラグインを導入することで解決すると思います。

解決策

typescript-deno-pluginを導入し、tsconfig.jsonで読み込むように設定することで解決する。

$ yarn add -D typescript-deno-plugin typescript
tsconfig.json
{"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"}]}}

導入後、以下のように型定義を解決できるようになった。

Screenshot.png

原因

demによって作成された./vendor/https/denopkg.com/syumai/dinatra/mod.tsを確認してみると、「An import path cannot end with a '. ts'extension...」のエラーが発生していた。

./vendor/https/denopkg.com/syumai/dinatra/mod.ts
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というファイルが存在した。

内容は下記の通り。

~/.cache/deno/deps/https/denopkg.com/syumai/dinatra@0.7.1/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の参照先に従って、型定義を解決する処理が行われているため、このプラグインを導入することで問題が解決した。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>