Edited at

RAML: api-designer実行時にrequestが見つからずにエラーになる件について

More than 1 year has passed since last update.


はじめに

※この記事はnpmからインストールするapi-designerのバージョンが0.4.1の場合の話です。お読みいただいている時点でそれより新しいバージョンをnpm経由で使用している場合はこの記事の内容は参考にならないと思います。

APIのドキュメント作成にRAMLを使っていて、記述にはRAML用エディタのapi-designerが便利です。


エラー

しかし、2018年7月現在、READMEのRunning Locally通りnpmからインストールしても実行時に以下のようなエラーになります。

Error: Cannot find module 'request'

at Function.Module._resolveFilename (module.js:538:15)
at Function.Module._load (module.js:468:25)
at Module.require (module.js:587:17)
at require (internal/module.js:11:18)
at Object. (/Users/jvarg25/.nvm/versions/node/v8.9.4/lib/node_modules/api-designer/bin/api-designer.js:6:15)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)


原因

requestっていうHTTP通信するパッケージに依存しているのですが、このrequestが0.4.1ではdevDependenciesにいます。https://github.com/mulesoft/api-designer/blob/support/v0.4.1/package.json#L58

devDependenciesにいるパッケージはnpm install時に依存パッケージとしてインストールされません。そのためrequestはインストールされず、上記のエラーが発生します。

実行に必要なパッケージは本来はdependenciesにいるべきです。


対応策

しかしmasterではdependenciesの中にいます。https://github.com/mulesoft/api-designer/blob/master/package.json#L22

なので、masterにあるコードをインストールすることで上記のエラーは回避できます。

npm install -g mulesoft/api-designer#master

エラーなくインストールされると思います。あとは普通にapi-designerを実行すればlocalhost:3000で立ち上がります。

npxで実行する場合はこちら

npx github: mulesoft/api-designer


対応策(非推奨)

個人的には良くないと思っていますが、requestをグローバルにインストールすればエラーは発生しなくなります。

npm install -g api-designer request


最後に

masterにあるコードをnpmにpublishすれば解決するが対応されない。issueはあります。https://github.com/mulesoft/api-designer/issues/509

不備や質問があればコメント欄かTwitter(@shisama_)までお願いいたします。