1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

openapi2aspidaで意図せずDefineMethodsが生成された話

Posted at

環境

  • Node.js: v16.20.2
  • TypeScript: v4.2.4
  • aspida: v1.7.1

経緯

先日openapi2aspidaを使用してAPIクライアントを生成した際、以下のようなimport文が生成されました。

import type { DefineMethods } from "aspida";

しかし、このプロジェクトではaspida v1.7.1を使用しており、DefineMethods型が存在しないため、当然エラーが発生しました。

Cannot find export 'DefineMethods' from module 'aspida'

原因

直接的な原因はpackage.jsonに記載しているscriptでnpxを使用していることでした。
npxはローカルにインストールされていないパッケージを実行する場合、最新バージョンをダウンロードして実行します。

"build:api": "rm -rf ./api && npx openapi2aspida -i http://localhost:4001/docs-json"

これにより最新のopenapi2aspidaを使用してしまい、このプロジェクトのaspidaには存在しないDefineMethods型を前提に生成してしまっていたようです。

解決策

openapi2aspidaをdevDependenciesに追加し、scriptを変更する。

"scripts": {
  "build:api": "rm -rf ./api && openapi2aspida -i http://localhost:4001/docs-json",
}

"devDependencies": {
  "openapi2aspida": "0.23.2"
}

このようにopenapi2aspidaのバージョンを指定することで、無事生成できるようになりました。

まとめ

npxは便利ですが、長期間放置していると今回のように意図しないタイミングでバージョンが上がってしまうため気をつけましょう。(n敗)

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?