はじめに
※この記事は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_)までお願いいたします。