LoginSignup
4
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-10-16

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の参照先に従って、型定義を解決する処理が行われているため、このプラグインを導入することで問題が解決した。

4
1
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
4
1